Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 276
- Предыдущая
- 276/642
- Следующая
Изменить размер шрифта:
276
using System.Reflection;using System.Runtime.Loader;Console.WriteLine("***** Fun with the default AppDomain *****\n");DisplayDADStats();Console.ReadLine();static void DisplayDADStats(){ // Получить доступ к домену приложения для текущего потока. AppDomain defaultAD = AppDomain.CurrentDomain; // Вывести разнообразные статистические данные об этом домене. Console.WriteLine("Name of this domain: {0}",defaultAD.FriendlyName); // Дружественное имя этого домена Console.WriteLine("ID of domain in this process: {0}",defaultAD.Id); // Идентификатор этого процесса Console.WriteLine("Is this the default domain?: {0}", defaultAD.IsDefaultAppDomain()); // Является ли этот домен стандартным Console.WriteLine("Base directory of this domain: {0}", defaultAD.BaseDirectory); // Базовый каталог этого домена Console.WriteLine("Setup Information for this domain:"); // Информация о настройке этого домена Console.WriteLine("\tApplication Base: {0}", defaultAD.SetupInformation.ApplicationBase); // Базовый каталог приложения Console.WriteLine("\t Target Framework: {0}", defaultAD.SetupInformation.TargetFrameworkName); // Целевая платформа}Ниже приведен вывод:
***** Fun with the default AppDomain *****Name of this domain: DefaultAppDomainAppID of domain in this process: 1Is this the default domain?: TrueBase directory of this domain: C:\GitHub\Books\csharp8-wf\Code\Chapter_14\DefaultAppDomainApp\DefaultAppDomainApp\bin\Debug\net5.0\Setup Information for this domain: Application Base: C:\GitHub\Books\csharp8-wf\Code\Chapter_14\ DefaultAppDomainApp\ DefaultAppDomainApp\bin\Debug\net5.0\ Target Framework: .NETCoreApp,Version=v5.0Обратите внимание, что имя стандартного домена приложения будет идентичным имени содержащегося внутри него исполняемого файла (
DefaultAppDomainApp.exeПеречисление загруженных сборок
С применением метода
GetAssemblies()AssemblySystem.ReflectionВ целях иллюстрации определите в классе Program новый вспомогательный метод по имени
ListAllAssembliesInAppDomain()static void ListAllAssembliesInAppDomain(){ // Получить доступ к домену приложения для текущего потока. AppDomain defaultAD = AppDomain.CurrentDomain; // Извлечь все сборки, загруженные в стандартный домен приложения. Assembly[] loadedAssemblies = defaultAD.GetAssemblies(); Console.WriteLine("***** Here are the assemblies loaded in {0} *****\n", defaultAD.FriendlyName); foreach(Assembly a in loadedAssemblies) { // Вывести имя и версию Console.WriteLine($"-> Name, Version: {a.GetName().Name}:{a.GetName().Version}" ); }}Добавив к операторам верхнего уровня вызов метода
ListAllAssembliesInAppDomain()***** Here are the assemblies loaded in DefaultAppDomainApp *****-> Name, Version: System.Private.CoreLib:5.0.0.0-> Name, Version: DefaultAppDomainApp:1.0.0.0-> Name, Version: System.Runtime:5.0.0.0-> Name, Version: System.Console:5.0.0.0-> Name, Version: System.Threading:5.0.0.0-> Name, Version: System.Text.Encoding.Extensions:5.0Важно понимать, что список загруженных сборок может изменяться в любой момент по мере написания нового кода С#. Например, предположим, что метод
ListAllAssembliesInAppDomain()
276
- Предыдущая
- 276/642
- Следующая
Перейти на страницу:
