Как я могу получить типы из ссылочной сборки? - PullRequest
1 голос
/ 08 августа 2010

Я хотел бы получить доступ к информации о типе из ссылочной (это ссылка на проект) сборки.Трудным путем было бы разрешить путь к файлу сборки с помощью решения VS и загрузить сборку из файла, но я уверен, что поскольку указанная сборка уже разрешена / загружена в исполняющую сборку, должен быть гораздо более простой способно этот путь действительно ускользает от меня.Как я могу это сделать?

Пример, в моем MainAssembly я ссылаюсь LibAssembly.Теперь в коде в MainAssembly мне нужно перебрать членов типов, определенных в LibAssembly.

Ответы [ 2 ]

3 голосов
/ 08 августа 2010

Чтобы получить список всех загруженных сборок, вы можете попробовать задать домен приложения:

AppDomain MyDomain = AppDomain.CurrentDomain;
Assembly[] AssembliesLoaded = MyDomain.GetAssemblies();
foreach (Assembly MyAssembly in AssembliesLoaded)
{
   //
}

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

3 голосов
/ 08 августа 2010

Самый простой способ, который я знаю, это использовать отражение.Если у вас есть класс с именем MyClass, определенный в LibAssembly, из вашей основной сборки вы можете вызвать код, подобный следующему:

Type[] types = Assembly.GetAssembly(typeof(MyClass)).GetTypes();

Это позволит вам получить все типы в LibAssembly.* Edit :

Если вы заранее не знали ни одного из типов и могли предполагать, что библиотека будет находиться в том же физическом месте, что и исполняемый файл, возможно, что-то в следующих строкахработа:

using System;
using System.IO;
using System.Reflection;

string libraryFileName = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "myLib.dll");
Assembly assembly = Assembly.LoadFrom(libraryFileName);
Type[] myTypes = assembly.GetTypes();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...