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