IForeAssembly.ClassItem

Синтаксис

ClassItem(ClassIndex: Integer): IForeClass;

ClassItem(ClassIndex: Integer): Prognoz.Platform.Interop.Fore.IForeClass;

Параметры

ClassIndex. Индекс конструкции, реализованной в сборке. Значение индекса указывается в диапазоне [0, ClassesCount-1].

Описание

Метод ClassItem возвращает информацию о конструкции сборки с указанным индексом.

Пример

Для выполнения примера предполагается наличие в репозитории сборки с идентификатором «ASSM_TEST».

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

Sub UserProc;
Var
    ForeService: IForeServices;
    Runtime: IForeRuntime;
    Assm: IForeAssembly;
    FClass: IForeClass;
    i, j: Integer;
Begin
    ForeService := MetabaseClass.Active 
As IForeServices;
    Runtime := ForeService.GetRuntime;
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("ASSM_TEST");
    //Получение информации о интерфейсах, классах, перечислениях
    j := Assm.ClassesCount - 1;
    
For i := 0 To j Do
        FClass := Assm.ClassItem(i);
        
Select Case FClass.ClassType
            
Case ForeClassType.Class_: Debug.Write("Класс: ");
            
Case ForeClassType.Interface_: Debug.Write("Интерфейс: ");
            
Case ForeClassType.Enum_: Debug.Write("Перечисление: ");
        
End Select;
        Debug.Write(FClass.Name);
        Debug.Write(
"; Модификатор доступа: ");
        
Select Case FClass.ClassAccessSpecificatorKind
            
Case AccessSpecificatorKind.Public_: Debug.WriteLine("Public");
            
Case AccessSpecificatorKind.Private_: Debug.WriteLine("Private");
            
Case AccessSpecificatorKind.Protected_: Debug.WriteLine("Protected");
            
Case AccessSpecificatorKind.Friend_: Debug.WriteLine("Friend");
            
Case AccessSpecificatorKind.ProtectedFriend: Debug.WriteLine("ProtectedFriend");
        
End Select;
    
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;
    i, j: Integer;
Begin
    ForeService := Params.Metabase 
As IForeServices;
    Runtime := ForeService.GetRuntime();
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("ASSM_TEST");
    //Получение информации о интерфейсах, классах, перечислениях
    j := Assm.ClassesCount() - 1;
    
For i := 0 To j Do
        FClass := Assm.ClassItem(i);
        
Select Case FClass.ClassType
            
Case ForeClassType.fctClass: System.Diagnostics.Debug.Write("Класс: ");
            
Case ForeClassType.fctInterface: System.Diagnostics.Debug.Write("Интерфейс: ");
            
Case ForeClassType.fctEnum: System.Diagnostics.Debug.Write("Перечисление: ");
        
End Select;
        System.Diagnostics.Debug.Write(FClass.Name);
        System.Diagnostics.Debug.Write(
"; Модификатор доступа: ");
        
Select Case FClass.ClassAccessSpecificatorKind
            
Case AccessSpecificatorKind.ackPublic: System.Diagnostics.Debug.WriteLine("Public");
            
Case AccessSpecificatorKind.ackPrivate: System.Diagnostics.Debug.WriteLine("Private");
            
Case AccessSpecificatorKind.ackProtected: System.Diagnostics.Debug.WriteLine("Protected");
            
Case AccessSpecificatorKind.ackFriend: System.Diagnostics.Debug.WriteLine("Friend");
            
Case AccessSpecificatorKind.ackProtectedFriend: System.Diagnostics.Debug.WriteLine("ProtectedFriend");
        
End Select;
    
End For;
End Sub;

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

См. также:

IForeAssembly