Для реализации интерфейса безопасности типа обычно требуется опыт разработчика .NET Developer, поскольку он требует выполнения ряда задач программирования от среднего до расширенного уровня.
Совет
Объекты данных, которые просто проходят через целевую среду или среду MATLAB ®, могут не нуждаться в упаковке, особенно если они не пересекают границы процесса. Потому что маршал - это дорого, только маршал по требованию.
После написания и тестирования кода MATLAB разработайте интерфейс .NET, поддерживающий собственные типы через API в C # или Visual Basic ®. В этом примере интерфейс,IAddOne, написана на языке C #.
Каждый метод в интерфейсе должен точно соответствовать развернутой функции MATLAB.
IAddOne интерфейс задает шесть перегрузок addOne:
using System.ServiceModel;
[ServiceContract]
public interface IAddOne
{
[OperationContract(Name = "addOne_1")]
int addOne(int x);
[OperationContract(Name = "addOne_2")]
void addOne(ref int y, int x);
[OperationContract(Name = "addOne_3")]
void addOne(int x, ref int y);
[OperationContract(Name = "addOne_4")]
System.Double addOne(System.Double x);
[OperationContract(Name = "addOne_5")]
System.Double[] addOne(System.Double[] x);
[OperationContract(Name = "addOne_6")]
System.Double[][] addOne(System.Double[][] x);
}
Как видно, все методы имеют один вход и один выход (для соответствия MATLAB addOne функция), хотя тип и положение этих параметров различаются.
В функции MATLAB выходные данные объявления появляются перед входными данными. Например, в addOne функция, вывод y появляется перед вводом x. Этот порядок не требуется для функций интерфейса .NET. Входы могут появляться до или после выходов, или два могут быть смешаны вместе.
Компилятор MATLAB SDK™ сопоставляет функции интерфейса .NET с общедоступными функциями MATLAB по имени функции и количеству аргументов. В addOne например, необходимо присвоить имя функции интерфейса .NET и функции MATLAB addOne и обе функции должны иметь равное количество определенных аргументов.
Число и относительный порядок входных и выходных аргументов критичны.
При оценке порядка параметров учитывается только порядок одинаковых параметров (входов или выходов), независимо от того, где они появляются в списке параметров.
Функция в интерфейсе может иметь меньше входов, чем соответствующая функция MATLAB, но не больше.
Сопоставление аргументов выполняется в соответствии с порядком аргументов, а не с именем аргумента.
Возвращаемое значение функции, если указано, считается первым выводом.
Необходимо использовать out параметры для нескольких выходов.
Альтернативно, ref параметр может использоваться для out. ref и out параметры являются синонимами.
MATLAB не поддерживает перегрузку функций. Таким образом, все пользовательские перегрузки функции с заданным именем будут сопоставлены с функцией, генерируемой MATLAB Compiler SDK.
Полные инструкции по управлению преобразованием данных с помощью интерфейсов безопасности типов см. в разделе Типы .NET в типы MATLAB.