![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Чтобы посмотреть, как программно взаимодействовать с доменами приложений.NET,
создадим новый проект типа С# Console Application по имени AppDomainManipulator и
определим в нем внутри типа Program статический метод PrintAllAssembliesInAppDomain(), использующий AppDomain.GetAssemblies () для получения списка всех двоичных файлов.NET, которые обслуживаются в интересующем домене приложения.
Этот список должен иметь вид массива типов System. Reflection.Assembly, a это значит, что необходимо использовать пространство имен System.Reflection. После получения массива сборок по нему должен осуществляться проход с отображением дружественного имени и версии каждой сборки:
public static void PrintAllAssembliesInAppDomain(AppDomain ad)
{
Assembly[] loadedAssemblies = ad.GetAssemblies();
Console.WriteLine("***** Here are the assemblies loaded in {0} *****\n", ad.FriendlyName);
foreach (Assembly a in loadedAssemblies)
{
Console.WriteLine("-> Name: {0}", a.GetName().Name); // имя
Console.WriteLine("-> Version: {0}\n", a.GetName().Version); // версия
}
}
Теперь модифицируем метод Main() так, чтобы перед вызовом PrintAllAssembliesInAppDomain{} он получал ссылку на текущий домен приложения через свойство AppDomain.CurrentDomain.
Чтобы пример стал еще немного интереснее, давайте сделаем так, чтобы метод Main ()
отображал окно сообщения Windows Forms и вынуждал CLR-среду загружать сборки
System.Windows.Forms.dll, System.Drawing.dll и System.dll.
Обязательно добавьте ссылки на эти сборки (Projectsè Add Reference) и соответствующим образом обновите набор операторов using
using System.Drawing;
using System.Windows;
using System.Windows.Forms;
static void Main(string[] args)
{
Console.WriteLine("***** Fun with AppDomains *****\n");
// Получение информации о текущем домене приложения.
AppDomain defaultAD = AppDomain.CurrentDomain;
// Этот вызов делается просто для выполнения загрузки
// дополнительных сборок в данный домен приложения.
// MessageBox.Show("Hello");
PrintAllAssembliesInAppDomain(defaultAD);
Console.ReadLine();
}
Дата публикования: 2015-07-22; Прочитано: 220 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!