exponenta event banner

Обработка данных, возвращенных из объектов .NET

Сопоставление типа .NET с типом MATLAB

MATLAB ® автоматически преобразует данные из объекта .NET в эти типы MATLAB. Эти значения отображаются в сигнатуре метода.

Тип C # .NETТип MATLAB
System.Int16int16 скаляр
System.UInt16uint16 скаляр
System.Int32int32 скаляр
System.UInt32uint32 скаляр
System.Int64int64 скаляр
System.UInt64uint64 скаляр
System.Singlesingle скаляр
System.Doubledouble скаляр
System.Booleanlogical скаляр
System.Byteuint8 скаляр
System.Enumenum
System.Charchar
System.DecimalSystem.Decimal
System.ObjectSystem.Object
System.IntPtrSystem.IntPtr
System.UIntPtrSystem.UIntPtr
System.StringSystem.String
System.Nullable<ValueType>System.Nullable<ValueType>
System.Array

См. раздел Использование массивов с приложениями .NET

System.__ComObject

См. раздел Как MATLAB обрабатывает систему. __ ComObject

class nameclass name
struct namestruct name

Преобразовать массивы примитивного типа .NET в тип MATLAB

Чтобы преобразовать элементы массива .NET в эквивалентный массив MATLAB, вызовите эти функции MATLAB. Пример см. в разделе Преобразование примитивных массивов .NET в массивы MATLAB.

Тип C # .NETФункция преобразования MATLAB
System.Int16

int16

System.UInt16uint16
System.Int32int32
System.UInt32uint32
System.Int64int64
System.UInt64uint64
System.Singlesingle
System.Doubledouble
System.Booleanlogical
System.Byteuint8

Как MATLAB обрабатывает System.String

Преобразование System.String объект для строки MATLAB, используйте string функция. Преобразование System.String объект к массиву символов MATLAB, используйте char функция. Например:

str = System.String('create a System.String');
mlstr = string(str)
mlchar = char(str)
mlstr = 

    "create a System.String"


mlchar =

    'create a System.String'           

MATLAB отображает строковое значение System.String вместо стандартного отображения объектов. Например, введите:

a = System.String('test')
b = System.String.Concat(a,' hello',' world')
a = 
test
b = 
test hello world

System.String класс иллюстрирует, как MATLAB обрабатывает поля и свойства, как описано в разделе Вызов свойств .NET, принимающих аргумент. Чтобы просмотреть справочную информацию о классе, выполните поиск термина System.String в библиотеке классов .NET Framework, как описано в разделе Дополнительные сведения о .NET Framework.

string функция преобразует String.String массивы (String.String[], String.String[,], и так далее) в MATLAB string массивы с одинаковыми размерами и размерами. Преобразование зубчатых массивов, например String.String[][], не поддерживается.

Как MATLAB обрабатывает систему. __ ComObject

System.__ComObject представляет объект Microsoft ® COM. Это невидимый общественный класс в mscorlib сборка без открытых методов. При определенных обстоятельствах объект .NET возвращает экземпляр System.__ComObject. MATLAB обрабатывает System.__ComObject на основе возвращаемых типов, определенных в метаданных.

MATLAB преобразует объект

Если возвращаемый тип метода или свойства имеет строгий тип и результатом вызова является System.__ComObjectMATLAB автоматически преобразует возвращенный объект в соответствующий тип.

Например, предположим, что сборка определяет тип, TestTypeи предоставляет способ, GetTestType, со следующей подписью.

Тип возвратаИмяАргументы
NetDocTest.TestType RetValGetTestType(NetDocTest.MyClass this)

Возвращаемый тип GetTestType имеет строгий тип, и .NET Framework возвращает объект типа System.__ComObject. MATLAB автоматически преобразует объект в соответствующий тип, NetDocTest.TestType, показанный в следующем псевдокоде:

cls = NetDocTest.MyClass;
var = GetTestType(cls)
var = 

  TestType handle with no properties.

Приведение объекта к соответствующему типу

Если возвращаемым типом метода или свойства является System.Object, и результатом вызова является System.__ComObject, MATLAB возвращает System.__ComObject. Чтобы использовать возвращенный объект, приведите его к допустимому классу или типу интерфейса. Используйте документацию по продукту, чтобы определить допустимые типы для этого объекта.

Чтобы вызвать элемент нового типа, приведите объект с помощью синтаксиса преобразования MATLAB:

objConverted = namespace.classname(obj)

где obj является System.__ComObject тип.

Например, элемент в коллекции листов Microsoft Excel ® может быть диаграммой или листом. Следующая команда преобразует System.__ComObject переменная mySheet в Chart или Worksheet объект newSheet:

newSheet = Microsoft.Office.Interop.Excel.interfacename(mySheet);

где interfacename является Chart или Worksheet. Пример см. в разделе Работа с электронными таблицами Microsoft Excel с использованием .NET.

Передача COM-объекта между процессами

При передаче COM-объекта в функцию или из нее заблокируйте объект таким образом, чтобы MATLAB не выпускал его автоматически, когда объект выходит из области действия. Чтобы заблокировать объект, вызовите NET.disableAutoRelease функция. Затем разблокируйте объект с помощью NET.enableAutoRelease функция, после того, как вы ее используете.

Как MATLAB обрабатывает System.Nullable

Если .NET возвращает System.Nullable тип, MATLAB возвращает соответствующий System.Nullable тип.

A System.Nullable тип позволяет назначать null значения для типов, таких как числовые типы, которые не поддерживают null значение. Использование System.Nullable объект в MATLAB, сначала решите, как обращаться null значения.

  • Если требуется обработать null значения отличаются от <ValueType> значения, используйте HasValue собственность.

  • Если вы хотите, чтобы каждое значение было из андерлаинга <ValueType>, используйте GetValueOrDefault способ. Этот метод назначает значение по умолчанию типа <ValueType> кому null значения.

При необходимости используйте переменную базового типа объекта в любом выражении MATLAB. Примеры см. в разделе Pass System.Nullable Arguments.

Как MATLAB обрабатывает динамический тип

MATLAB обрабатывает динамические типы как System.Object. Например, следующий метод C #exampleMethod имеет динамический входной аргумент d и возвращает динамическое выходное значение:

public dynamic exampleMethod(dynamic d)

В следующей таблице показана соответствующая сигнатура функции MATLAB.

Тип возвратаИмяАргументы
System.Object RetValexampleMethod(namespace.classname this,
System.Object d)

Как MATLAB обрабатывает зазубренные массивы

Перед использованием массива с зазором .NET необходимо преобразовать его в команду MATLAB. Для преобразования:

  • Если форма массива прямоугольная, используйте соответствующую числовую функцию MATLAB.

  • Если массив не является прямоугольным, используйте cell функция.

Если зазубренный массив является многомерным, необходимо по отдельности преобразовать массивы в каждом измерении.