2013-12-06 5 views
0

У меня есть метод, который выполняет поиск как в локальной сборке, так и в текущем каталоге. Он ищет класс, основанный на названии (отражение). Однако теперь я хочу только загружать классы/dll, которые я ищу в память, а не загружать их все и выбирать тот, который я хочу от него. Мне сказали, что для этого можно использовать marshalbyrefobject. [Ниже приведен код, который я использую в настоящее время]управлять памятью с помощью marshalbyrefobject

Решение должно состоять в том, чтобы создать 2 домена приложения и загрузить одну из них на все сборки и выполнить проверки, а затем выгрузить домены приложений, хотя я не уверен, как это сделать делая это.

+0

Я думал Сборщик мусора делает почти то, что нам нужно с участием управления памятью? –

+0

Ну, мне было поручено не загружать их в память в первую очередь, только для загрузки в память тех, что я ищу – user1348463

+1

Не знаю, почему вы думаете, что MBRO делает что-нибудь полезное здесь. .NET Framework уже работает таким образом, вы только платите за классы, которые вы фактически используете. Неиспользованные типы вообще не берут никаких ресурсов. Вы пытаетесь решить проблему, которой у вас нет. –

ответ

0

К моему ограниченному знанию, вы можете избежать загрузки сборок, запросив их заранее, используя класс Assembly.

Полная рабочая модель будет выглядеть следующим образом:

1 - Сбор информации через класс Ассамблеи

Файл сборки:

Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName); 

Локальная сборка:

Assembly myAssembly = Assembly.GetExecutingAssembly(); 

2 - Iterate через классы присутствуют на каждой ссылке

Assembly mscorlib = typeof(string).Assembly; 

foreach (Type type in mscorlib.GetTypes()) 
{ 
    Console.WriteLine(type.FullName); 
} 

3 Ассамблеи - После того, как выбор, какой узел использовать, нагрузки его в приложение домена

Assembly assembly = Assembly.Load(fullAssemblyName); 

или

Assembly assembly = Assembly.LoadFrom(fileName); 

Примеры, скопированные из следующего сообщения, поэтому не стесняйтесь оставлять ответы там, если вы считаете, что они дань, чтобы решить вашу проблему!

C#: List All Classes in Assembly