Как я могу получить список типов из DLL в C #? - PullRequest
4 голосов
/ 20 августа 2010

Я бы хотел указать приложению C # на DLL и получить список типов, определенных в этой DLL. То, что у меня есть, выглядит прямо на поверхности, но дает ошибку, указанную ниже.

using System.Reflection;

...

static void Main(string[] args)
{
    Assembly SampleAssembly;
    SampleAssembly = Assembly.LoadFrom("C:\\MyAssembly.dll"); //error happens here

    foreach (Type tp in SampleAssembly.GetTypes())
    {
        Console.WriteLine(tp.Name);
    }
}

/*
This will give me:
Unable to load one or more of the requested types.
Retrieve the LoaderExceptions property for more information.

I wish it would give me something like this:
MyClass1
MyClass2
MyClass3
*/

Ответы [ 2 ]

5 голосов
/ 20 августа 2010

Используйте ReflectionOnlyLoad вместо прямой загрузки, чтобы среда выполнения не пыталась выполнить какой-либо код в целевой сборке

2 голосов
/ 20 августа 2010

Возникает исключение ReflectionTypeLoadException, поскольку один из ваших типов генерирует исключение во время статической инициализации. Это может произойти, если сигнатуры метода / свойства / поля зависят от типа, который недоступен. Я рекомендую вам перехватить это исключение и проверить содержимое свойства LoaderExceptions исключения, как было предложено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...