Назначение обнуляемых типов импортируемому классу.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

Другие вопросы по тегам