IForeNETRuntime.CreateArgs

Синтаксис

CreateArgs(ArgCount: Integer): IForeNETRuntimeMethodArgs;

Параметры

ArgCount. Количество аргументов.

Описание

Метод CreateArgs создает коллекцию аргументов, которые в дальнейшем будут использоваться для выполнения какого-либо метода.

Комментарии

Коллекция аргументов содержит в себе определенные значения, которые необходимы при выполнении каких-либо .NET-методов. Данная коллекция может использоваться в методах:

Для каждого аргумента должна быть создана настройка, связывающая значение аргумента с его типом. Это необходимо для корректного выполнения различных перегруженных методов. Связь аргументов с соответствующими типами осуществляется в коллекции IForeNETRuntimeMethodBinding.Types. Каждый аргумент должен быть связан с типом, который определен в сигнатуре .NET-метода. Если выполняемый .NET-метод содержит в своей сигнатуре параметры, передаваемые по ссылке, то эти параметры также должны быть учтены в коллекции, создаваемой данным методом. В данных аргументах будут содержаться значения, полученные в результате выполнения .NET-метода.

Для создания связи с типами аргументов используется метод CreateBinding.

Пример

Рассмотрим пример создания экземпляра объекта типа «System.Drawing.Font». Данный тип реализован в сборке «System.Drawing» и реализует различные шрифты. Для данного типа существует конструктор: Font(FontFamily, Single, FontStyle), где FontFamily - наименование шрифта, Single - размер шрифта, FontStyle - стиль шрифта.

Sub UserProc;
Var
    Run: IForeNETRuntime;
    Asm, Asm1: IForeNETRuntimeAssembly;
    Arg: IForeNETRuntimeMethodArgs;
    Bind: IForeNETRuntimeMethodBinding;
    Typ, Typ1, Typ2, Typ3: IForeNETRuntimeType;
    TypInst: IForeNETRuntimeObjectInstance;
Begin
    Run := ForeNETAssemblyClass.Runtime;
    Asm := Run.SystemAssembly("System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
    Asm1 := Run.SystemAssembly("mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac");
    Typ := Asm.Type("System.Drawing.Font");
    //Типы параметров, используемые в конструкторе
    Typ1 := Asm1.Type("System.String");
    Typ2 := Asm1.Type("System.Single");
    Typ3 := Asm.Type("System.Drawing.FontStyle");
    //Значения параметров, необходимые для конструктора
    Arg := Run.CreateArgs(3);
    Arg.Value(0) := "Arial";
    Arg.Value(1) := 14;
    //Значение 5 соответствует комбинации .NET-типа: (FontStyle.Bold Or FontStyle.Italic)
    Arg.Value(2) := 5;
    //Создание связи, для определения параметров поиска перегруженного метода
    Bind := Run.CreateBinding(3);
    Bind.Types.Item(0) := Typ1;
    Bind.Types.Item(1) := Typ2;
    Bind.Types.Item(2) := Typ3;
    //Создание экземпляра шрифта с указанными параметрами
    TypInst := Typ.CreateInstance(Arg, Bind);
End Sub UserProc;

При выполнении примера будет получен контекст сборки «System.Drawing». Из этой сборки будет получен тип «System.Drawing.Font» используемый для создания различных шрифтов. Для использования конструктора будут созданы три аргумента. Для поиска соответствующего перегруженного конструктора будет создана связь, в настройках которой будут указаны типы параметров конструктора. После этого будет создан экземпляр шрифта с указанными параметрами. Данный шрифт в дальнейшем может использоваться для определения шрифта различных .NET-компонентов, либо там, где требуются аргументы с типом System.Drawing.Font.

См. также:

IForeNETRuntime