MWObjectArray, специальный подкласс MWArray, позволяет вам создать массив MATLAB® тот.NET ссылок объекты.
Для получения информации об этих классах преобразования данных см. Справочник по библиотеке классов MWArray MATLAB, доступный в папка, где matlabroot\help\dotnetbuilder\MWArrayAPImatlabroot представляет вашу папку установки MATLAB
Можно создать обертку кода MATLAB вокруг объектов.NET с помощью MWObjectArray. Используйте этот метод, чтобы передать объекты в отношении функций MATLAB и возвратить объекты.NET. Примеры в этом разделе представляют некоторые случаи общего использования.
Передать объект в блок MATLAB Compiler SDK™:
Запишите функцию MATLAB, которая ссылается на тип.NET:
function addItem(hDictionary, key, value)
if ~isa(hDictionary,'System.Collections.Generic.IDictionary')
error('foo:IncorrectType',
... 'expecting a System.Collections.Generic.Dictionary');
end
hDictionary.Add(key, value);
end
Создайте объект.NET передать функции MATLAB:
Dictionary char2Ascii= new Dictionary();
char2Ascii.Add("A", 65);
char2Ascii.Add("B", 66);
Создайте экземпляр MWObjectArray переносить объект.NET:
MWObjectArray MWchar2Ascii=
new MWObjectArray(char2Ascii);
Передайте перенесенный объект функции MATLAB:
myComp.addItem(MWchar2Ascii,'C', 67);
Можно также использовать MWObjectArray клонировать объект в блоке.NET MATLAB Compiler SDK. Продолжая пример мимоходом Объект.NET в блок.NET MATLAB Compiler SDK, выполните следующие шаги:
Запишите функцию MATLAB, которая ссылается на тип.NET:
function result= add(hMyDouble, value)
if ~isa(hMyDouble,'MyDoubleComp.MyDouble')
error('foo:IncorrectType', 'expecting a MyDoubleComp.MyDouble');
end
hMyDoubleClone= hMyDouble.Clone();
result= hMyDoubleClone.Add(value);
end
Создайте объект:
MyDouble myDouble= new MyDouble(75);
Создайте экземпляр MWObjectArray переносить объект.NET:
MWObjectArray MWdouble= new MWObjectArray(myDouble);
origRef = new MWObjectArray(hash); Передайте перенесенный объект функции MATLAB и получите возвращенный клонированный объект:
MWObjectArray result=
(MWObjectArray)myComp.add(MWdouble, 25);Разверните.NET, возражают и распечатывают результат:
MyDouble doubleClone= (MyDouble)result.Object;
Console.WriteLine(myDouble.ToDouble());
Console.WriteLine(doubleClone.ToDouble());
При вызове Clone метод на MWObjectArray, следующие правила касаются перенесенного объекта.
Если перенесенным объектом является ValueType, это глубоко скопировано.
Если объектом не является ValueType и реализации ICloneable, Clone метод для объекта называется.
MemberwiseClone метод называется на перенесенном объекте.
Для полного примера того, как использовать MWObjectArray чтобы создать ссылку на объект.NET и передать его компоненту, смотрите Объединяющиеся Стандартные программы Оптимизации MATLAB с Целевыми функциями на.NET и Объединяющиеся Стандартные программы Оптимизации MATLAB с Целевыми функциями в Visual Basic.
Каждое веб-приложение.NET ASP, развернутое на IIS, запускается в отдельном AppDomain.
Интерфейс.NET MATLAB должен поддержать тип.NET, перенесенный MWObjectArray. Если MWObjectArray создается в AppDomain по умолчанию, перенесенный тип не имеет никаких других ограничений.
Если MWObjectArray не создается в AppDomain по умолчанию, перенесенный тип.NET должен быть сериализуемым. Это ограничение наложено тем, что объект должен быть упорядочен от AppDomain не по умолчанию к AppDomain по умолчанию для MATLAB, чтобы получить доступ к нему.
Если у вас будут какие-либо глобальные объекты в вашем коде C# затем, то вы получите исключение Windows® при выходе из приложения. Чтобы преодолеть это ограничение, используйте одно из этих решений:
Явным образом очистите глобальные объекты прежде, чем выйти из приложения.
globalObj.Destroy();
Вызовите TerminateApplicationEx метод прежде, чем выйти из приложения.
MWMCR.TerminateApplicationEx();
Для получения дополнительной информации о TerminateApplicationEx, см. документацию API MWArray.