#acumatica
#acumatica
Вопрос:
У меня есть код, который устанавливает значение PXDataFieldAssign следующим образом:
pf = new PXDataFieldAssign<xTACProjectTask.dueDate>(someValue);
У меня также есть таблица, содержащая имена полей DAC, такие как «xTACProjectTask.DueDate». В этой таблице также есть поле флажка, чтобы определить, следует ли использовать это поле DAC в качестве параметра.
Есть ли способ не иметь жестко запрограммированного имени поля DAC, а вместо этого (возможно, с помощью вызова ‘typeof’?) Использовать результаты запроса таблицы для задания этого имени поля — например, следующим образом?
pf = new PXDataFieldAssign<typeof("xTACProjectTask.dueDate")>(someValue);
или, используя результат моего запроса:
pf = new PXDataFieldAssign<typeof(query.value)>(someValue);
при этом query.value является значением в таблице, содержащей имя поля DAC?
Ответ №1:
Вы можете создать его с помощью Type.GetType
и Activator.CreateInstance
. Пожалуйста, посмотрите пример ниже:
string typeName = "PX.Objects.IN.InventoryItem descr,PX.Objects";
Type typeArgument = Type.GetType(typeName);
Type genericClass = typeof(PXDataFieldAssign<>);
Type constructedClass = genericClass.MakeGenericType(typeArgument);
object created = Activator.CreateInstance(constructedClass,new object[] { "Test Description" });
Вы получите приведенное ниже завернутое object
в created