Почему Assembly.GetType () не находит мой класс? - PullRequest
6 голосов
/ 19 сентября 2011

Кодовая выдержка:

var a = Assembly.LoadFile("MyAssembly.dll");
var t = a.GetType("MyNamespace.MyClass", false);
Debug.Assert(t != null); // fails

Assembly.LoadFile() загружает сборку без каких-либо проблем, но Assembly.GetType() возвращает значение NULL, хотя я убедился, что MyNamespace.MyClass присутствует и правильно написано.

Есть еще идеи, почему это происходит?

Ответы [ 3 ]

10 голосов
/ 19 сентября 2011

В строке

var t = a.GetType("MyNamespace.MyClass", false);

установите для этого логического значения true, чтобы получить исключение, которое может объяснить проблему.Для различных проблемных ситуаций вы получаете отдельные исключения, см. MSDN или новые документы .

5 голосов
/ 19 сентября 2011

Фактическая основная проблема заключалась в том, что MyAssembly.dll имеет другую зависимость от OtherAssembly.dll.Как только я включаю ссылку на OtherAssembly.dll в вызывающую сборку, все работает нормально.

0 голосов
/ 19 сентября 2011
// Retrieve all classes that are typeof SomeClassOrInterface

List<Type> myTypes = assembly.GetTypes().Where(typeof(SomeClassOrInterface).IsAssignableFrom).ToList();

// Loop thru them or just use Active.CreateInstance() of the type you need

myTypes.ForEach(myType => {
    SomeClassOrInterface instance = Activator.CreateInstance(myType) as SomeClassOrInterface;                           
});

Этот пример кода работает под .NET 4

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