Назначение обнуляемых типов импортируемому классу.NET в Wonderware Application Server
У меня проблема с присвоением значений обнуляемому типу в IDE Wonderware ArchestrA (2012 R2).
Мой импортированный класс.NET выглядит так:
public class TestObject
{
public string Name { get; set; }
public Nullable<int> MyNullableInt { get; set; }
public int MyInt { get; set; }
}
Затем я импортирую это в Galaxy, используя Import -> Script Function Library.
Мой скрипт ArchestrA состоит буквально из следующего:
dim NT as NullTest.TestObject;
NT = new NullTest.TestObject;
NT.MyNullableInt = 3;
Скрипт проверяет, но назначая MyNullableInt
вызывает ошибку сценария в консоли управления:
ProdCapability_001.GetMESWOData: {0896E675-F7D7-4F77-9FD2-20477058E072}: JIT-компилятор обнаружил внутреннее ограничение.
.NET 4.5 установлен на сервере. Могут ли импортированные классы.NET в Wonderware Application Server не использовать типы Nullable? Или я что-то пропустил?
2 ответа
Обнаружили, что обобщения не поддерживаются, что объясняет причудливое сообщение "Перегрузка конструктора не найдена". Из справки ArchestrA IDE:
Хотя QuickScript поддерживает библиотеки импорта, созданные с помощью.NET CLR версии 2.0.50727, он не поддерживает какие-либо новые языковые функции, представленные в.NET 2.0, такие как универсальные шаблоны.
Итак, похоже, мне нужно создать класс, который поддерживает присвоение нулевого значения для каждого типа значения.NET, которому я хочу иметь возможность назначать нулевое значение, в отличие от использования класса Nullable.
В Wonderware отсутствуют некоторые функции (нули, обобщения, обработка исключений, использование операторов). Однако, если я правильно помню, вы можете использовать DBNull в некоторых случаях (например, если вам нужна пустая ячейка в таблице или вы записываете нулевое значение в базу данных).
https://msdn.microsoft.com/en-us/library/system.dbnull.value%28v=vs.110%29.aspx