Назначение типов, допускающих значение NULL, импортированному классу .NET в Wonderware Application Server

У меня возникла проблема с присвоением значений типу, допускающему значение NULL, в 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? Или я что-то пропустил?


person Gareth    schedule 08.10.2013    source источник
comment
Что произойдет, если вы измените его на это: NT.MyNullableInt = new Nullable<int>(3);? Вы также получаете это исключение, когда используете NT.MyInt = 3;?   -  person Daniel Hilgarth    schedule 08.10.2013
comment
Когда я это делаю, я получаю, что тип «Nullable» не найден.   -  person Gareth    schedule 08.10.2013
comment
Затем используйте System.Nullable<int>(3);.   -  person Daniel Hilgarth    schedule 08.10.2013
comment
Уже сделал, теперь я получаю, что перегрузка конструктора не найдена   -  person Gareth    schedule 08.10.2013
comment
Это странно.   -  person Daniel Hilgarth    schedule 08.10.2013


Ответы (2)


Обнаружил, что дженерики не поддерживаются, что объясняет странное сообщение «Перегрузка конструктора не найдена». Из справки ArchestrA IDE:

Хотя QuickScript поддерживает библиотеки импорта, созданные с помощью .NET CLR версии 2.0.50727, он не поддерживает ни одну из новых языковых функций, представленных в .NET 2.0, например универсальные шаблоны.

Итак, похоже, мне нужно создать класс, который поддерживает назначение null для каждого типа значения .NET, которому я хочу иметь возможность назначать null, в отличие от использования класса Nullable.

person Gareth    schedule 08.10.2013

В Wonderware отсутствуют некоторые функции (нулевые значения, обобщения, обработка исключений, операторы использования). Однако, если я правильно помню, в некоторых случаях вы можете использовать DBNull (например, если вам нужна пустая ячейка в таблице или если вы записываете нулевое значение в базу данных).

https://msdn.microsoft.com/en-us/library/system.dbnull.value%28v=vs.110%29.aspx

person Taraz    schedule 25.04.2015