IForeNETRuntimeMethod.Invoke

Синтаксис

Invoke(

Instance: IForeNETRuntimeObjectInstance;

[Args: IForeNETRuntimeMethodArgs = Null]): IForeNETRuntimeObjectInstance;

Параметры

Instance. Экземпляр объекта, для которого осуществляется выполнение .NET-метода. Если выполняется статический метод какого-либо класса, то в качестве значения необходимо передавать Null.

Args. Массив аргументов, которые будут использоваться в качестве значений параметров выполняемого метода.

Описание

Метод Invoke осуществляет выполнение указанного .NET-метода для указанного экземпляра объекта.

Пример

Sub UserProc;
Var
    Run: IForeNETRuntime;
    Asm, Asm1: IForeNETRuntimeAssembly;
    Typ, Typ1: IForeNETRuntimeType;
    Bin: IForeNETRuntimeMethodBinding;
    TypMeth: IForeNETRuntimeMethod;
    Arg: IForeNETRuntimeMethodArgs;
    TypInst: IForeNETRuntimeObjectInstance;
    v: Array;
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.Color");
    //Тип параметра, используемый в методе для создания экземпляра
    Typ1 := Asm1.Type("System.String");
    //Связь для поиска перегруженного метода
    Bin := Run.CreateBinding(1);
    Bin.Types.Item(0) := Typ1;
    //Флаги, используемые при поиске
    Bin.Flags := MethodBindingFlags.Static Or MethodBindingFlags.Public_;
    //Получение статического метода с наименованием «FromName»
    TypMeth := Typ.Method("FromName", Bin);
    //Создание аргумента для выполнения метода
    Arg := TypMeth.CreateArgs;
    Arg.Value(0) := "Purple";
    //Выполнение метода
    //Результат выполнения метода - это экземпляр цвета
    TypInst := TypMeth.Invoke(Null, Arg);
    v := New Variant[0];
    //Получение параметров цвета
    Debug.WriteLine(TypInst.InvokeMethod("get_R", v));
    Debug.WriteLine(TypInst.InvokeMethod("get_G", v));
    Debug.WriteLine(TypInst.InvokeMethod("get_B", v));
End Sub UserProc;

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

См. также:

IForeNETRuntimeMethod