IForeObject.FieldItem

Синтаксис

FieldItem(Index: Integer): IForeVar;

FieldItem(Index: Integer): Prognoz.Platform.Interop.Fore.IForeVar;

Параметры

Index. Индекс поля.

Описание

Метод FieldItem возвращает поле класса с указанным индексом.

Комментарии

Количество доступных полей можно получить с помощью метода FieldsCount.

Пример

Для выполнения примера предполагается наличие модуля с идентификатором «MODULE». В модуле добавлен следующий класс:

Class Test: Object
    
Public A: Integer;
    
Public B: String;
    
Public C: DateTime;
    
    
Public Constructor Create;
    
Begin
        a := 
100;
        b := 
"Test";
        c := DateTime.Now;
    
End Constructor Create;
End Class Test;

Добавьте ссылки на системные сборки: Fore, Metabase.

Sub UserProc;
Var
    ForeService: IForeServices;
    Runtime: IForeRuntime;
    Assm: IForeAssembly;
    FClass: IForeClass;
    ClassInst: IForeObject;
    FSub: IForeSub;
    Field: IForeVar;
    c, i: Integer;
Begin
    ForeService := MetabaseClass.Active 
As IForeServices;
    Runtime := ForeService.GetRuntime;
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("MODULE");
    
//Получение класса
    FClass := Assm.BindToClass("Test");
    
//Создание экземпляра класса
    ClassInst := FClass.CreateObject;
    
//Вызов конструктора, инициализирующего значения для полей
    FSub := FClass.BindToMethod("Create");
    FSub.Self := ClassInst;
    FSub.Invoke;
    //Просмотр полей
    c := ClassInst.FieldsCount;
    
For i := 0 To c - 1 Do
        Field := ClassInst.FieldItem(i);
        Debug.WriteLine(Field.Name + 
" : " + Field.Value);
    
End For;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Fore;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    ForeService: IForeServices;
    Runtime: IForeRuntime;
    Assm: IForeAssembly;
    FClass: IForeClass;
    ClassInst: IForeObject;
    FSub: IForeSub;
    Field: IForeVar;
    c, i: Integer;
Begin
    ForeService := Params.Metabase 
As IForeServices;
    Runtime := ForeService.GetRuntime();
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("MODULE");
    
//Получение класса
    FClass := Assm.BindToClass("Test");
    
//Создание экземпляра класса
    ClassInst := FClass.CreateObject();
    
//Вызов конструктора, инициализирующего значения для полей
    FSub := FClass.BindToMethod("Create");
    FSub.Self := ClassInst;
    FSub.Invoke();
    
//Просмотр полей
    c := ClassInst.FieldsCount();
    
For i := 0 To c - 1 Do
        Field := ClassInst.FieldItem(i);
        System.Diagnostics.Debug.WriteLine(Field.Name + 
" : " + Field.Value);
    
End For;
End Sub;

При выполнении примера в среду выполнения будет загружен указанный модуль. Будет создан экземпляр класса, выполнен конструктор, который инициализирует значения полей. После этого значения всех полей будут выведены в консоль среды разработки.

См. также:

IForeObject