IForeAssembly.SubItem

Синтаксис

SubItem(SubIndex: Integer): IForeSub;

SubItem(SubIndex: Integer): Prognoz.Platform.Interop.Fore.IForeSub;

Параметры

SubIndex. Индекс процедуры/функции. Значение индекса указывается в диапазоне [0, SubsCount-1].

Описание

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

Пример

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

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

Sub UserProc;
Var
    ForeService: IForeServices;
    Runtime: IForeRuntime;
    Assm: IForeAssembly;
    FSub: IForeSub;
    i, j: Integer;
Begin
    ForeService := MetabaseClass.Active 
As IForeServices;
    Runtime := ForeService.GetRuntime;
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("ASSM_TEST");
    //Получение информации о процедурах/функциях, реализованных в глобальном пространстве имён сборки
    j := Assm.SubsCount - 1;
    
For i := 0 To j Do
        FSub := Assm.SubItem(i);
        
If FSub.IsResult Then
            Debug.Write(
"Функция: ");
        
Else
            Debug.Write(
"Процедура: ");
        
End If;
        Debug.Write(FSub.Name);
        Debug.Write(
"; Модификатор доступа: ");
        
Select Case FSub.SubAccessSpecificatorKind
            
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;
    FSub: IForeSub;
    i, j: Integer;
Begin
    ForeService := Params.Metabase 
As IForeServices;
    Runtime := ForeService.GetRuntime();
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("ASSM_TEST");
    //Получение информации о процедурах/функциях, реализованных в глобальном пространстве имён сборки
    j := Assm.SubsCount() - 1;
    
For i := 0 To j Do
        FSub := Assm.SubItem(i);
        
If FSub.IsResult Then
            System.Diagnostics.Debug.Write(
"Функция: ");
        
Else
            System.Diagnostics.Debug.Write(
"Процедура: ");
        
End If;
        System.Diagnostics.Debug.Write(FSub.Name);
        System.Diagnostics.Debug.Write(
"; Модификатор доступа: ");
        
Select Case FSub.SubAccessSpecificatorKind
            
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