IForeRuntime.BindToAssembly

Синтаксис

BindToAssembly(AssamblyName: String): IForeAssembly;

BindToAssembly(AssamblyName: String): Prognoz.Platform.Interop.Fore.IForeAssembly;

Параметры

AssamblyName. Сборка, к конструкциям которой необходимо получить доступ.

Описание

Метод BindToAssembly предоставляет доступ к конструкциям сборки.

Комментарии

В качестве значения параметра AssamblyName указывается наименование системной сборки среды разработки (ABAC, Adhoc и другие) или идентификатор сборки//формы/модуля в репозитории. Если сборка репозитория реализована внутри контейнера, то в параметре AssamblyName указывается следующее значение: <идентификатор контейнера>.<идентификатор сборки>.

Пример

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

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

Sub UserProc;
Var
    ForeService: IForeServices;
    Runtime: IForeRuntime;
    Assm: IForeAssembly;
    FClass: IForeClass;
    FSub: IForeSub;
    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.WriteLine(FClass.Name);
    
End For;
    
//Получение информации о процедурах/функциях, реализованных в глобальном пространстве имён сборки
    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.WriteLine(FSub.Name);
    
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;
    FSub: IForeSub;
    i, j: Integer;
Begin
    ForeService := Params.Metabase 
As IForeServices;
    Runtime := ForeService.GetRuntime();
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("ASSM_TEST");
    System.Diagnostics.Debug.WriteLine(Assm.ClassesCount());
    System.Diagnostics.Debug.WriteLine(Assm.SubsCount());
    
//Получение информации о интерфейсах, классах, перечислениях
    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.WriteLine(FClass.Name);
    
End For;
    
//Получение информации о процедурах/функциях, реализованных в глобальном пространстве имён сборки
    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.WriteLine(FSub.Name);
    
End For;
End Sub;

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

См. также:

IForeRuntime