Реализация безопасного с точки зрения типов интерфейса обычно требует экспертных знаний Разработчика.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 для полных инструкций в преобразовании данных об управлении с безопасными с точки зрения типов интерфейсами.