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.