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;
При выполнении примера в среду выполнения будет загружена сборка репозитория с указанным идентификатором. В консоль среды разработки будет выведен список конструкций, которые реализованы в сборке.
См. также: