Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > AppDomain.CreateDomain("FriendlyName")


Автор: AHgpeu 9.2.2009, 12:38
Архитектура приложения следующая:
Есть интерфейс И, отдельная DLL
Есть класс, его реализующий К, отдельная DLL (плагин)
В главном приложении нужно использовать плагин, производя динамически поиск библиотек в заданном каталоге.
Для того, чтобы не загружалась память, на основе http://msdn.microsoft.com/ru-ru/library/ms972968(en-us).aspx создаю новый AppDomain.

Код

AppDomain tmpDomain = AppDomain.CreateDomain("tmpDomain");
tmpDLLs = (Dlls)tmpDomain.CreateInstanceAndUnwrap("TestingMyDll_WinForms", "TestingMyDll_WinForms.Dlls");                
InterfacesList = tmpDLLs.FindDlls(AppDomain.CurrentDomain.BaseDirectory); // здесь выполняются методы класса
AppDomain.Unload(tmpDomain);

Но что-то мне подсказывает, что что-то не так.
т.к. после его создания 
Код

AppDomain.CurrentDomain.FriendlyName
 остается прежним. ("TestingMyDll_WinForms.vshost.exe" вместо "tmpDomain")

Автор: nyxiscoo1 9.2.2009, 21:28
Цитата(AHgpeu @  9.2.2009,  12:38 Найти цитируемый пост)
Но что-то мне подсказывает, что что-то не так.т.к. после его создания код 
Код
C#1:AppDomain.CurrentDomain.FriendlyNamehighlight

остается прежним. ("TestingMyDll_WinForms.vshost.exe" вместо "tmpDomain")

все будет зависеть от того откуда вызывается этот код, если он вызывается в tmpDLLs, то необходимо, чтобы класс Dlls был унаследован от MarshalByRefObject, иначе вместо прокси у тебя будет создаваться объект в текущем домене.

А вообще для создания приложения с плагинами у M$ есть свой собственный фреймворк AddIn Framework входящий в .net framework 3.5
http://www.shafqatahmed.com/2008/01/new-net-35-fe-1.html
тут есть несколько полезных ссылок для начала

Автор: Partizan 9.2.2009, 22:25
nyxiscoo1, ох и намучился я с этим System.AddIn =)

Советую 10 раз подумать, прежде, чем его использовать ;))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)