Для реализации безопасного интерфейса типа обычно требуется опыт разработчика .NET, поскольку он требует выполнения ряда задач программирования от среднего до расширенного.
Совет
Объекты данных, которые просто проходят через цель или MATLAB® окружения, возможно, не должны быть обобщены, особенно если они не пересекают контур процесса. Потому что маршалинг дорого обходится, только маршал по требованию.
После записи и тестирования кода MATLAB разработайте интерфейс .NET, который поддерживает нативные типы через API на C # или Visual Basic®. В этом примере интерфейс, IAddOne
, написано на C #.
Каждый метод в интерфейсе должен точно совпадать с развернутой функцией MATLAB.
The 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
function), хотя тип и положение этих параметров изменяются.
В функции MATLAB выходы объявления появляются перед входами. Для примера, в addOne
function, выходной y
появляется перед входом x
. Это упорядоченное расположение не требуется для функций интерфейса .NET. Входные параметры могут появиться до или после выходов, или они могут быть смешаны вместе.
MATLAB Compiler SDK™ соответствует функциям интерфейса .NET общедоступным функциям MATLAB по имени функции и количеству аргументов. В addOne
например, необходимо назвать как функцию интерфейса .NET, так и функцию MATLAB addOne
и обе функции должны иметь равное количество заданных аргументов.
Количество и относительный порядок входа и выходных аргументов очень важны.
При оценке порядка параметров рассматривается только порядок одинаковых параметров (входы или выходы), независимо от того, где они появляются в списке параметров.
Функция в интерфейсе может иметь меньше входов, чем ее соответствующая функция MATLAB, но не больше.
Отображение аргументов происходит в соответствии с порядком аргументов, а не с именем аргумента.
Функция возврата значение, если задано, отсчитывается как первый выход.
Необходимо использовать out
параметры для нескольких выходов.
Альтернативно, ref
параметр может использоваться для out
. ref
и out
параметры являются синонимами.
MATLAB не поддерживает перегрузку функций. Таким образом, все пользовательские перегрузки функции с заданным именем будут сопоставлены с функцией, сгенерированной MATLAB Compiler SDK.
Полные инструкции по управлению преобразованием данных с помощью безопасных интерфейсов см. в разделе Типы .NET в типы MATLAB.