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