Реализуйте безопасный с точки зрения типов интерфейс

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