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.