читать производный тип из .net dll - PullRequest
1 голос
/ 14 июня 2011

Демонстрация: У меня есть две библиотеки классов в моем проекте.1) Действие 2) Процесс.

Моя Библиотека действий содержит интерфейс IProcessor с методом Process.

Inмоя библиотека процессов у меня есть 3 класса

A) ClassA: IP-процессор
B) ClassB: IP-процессор
C) ClassC: IP-процессор

, который реализует IP-процессоринтерфейс.

Когда я пытался прочитать сборку Process Library, я не оштрафовал ни один тип ClassA, ClassB и ClassC

Я использовал

Assembly processorAssembly = Assembly.LoadFile(process.dll);
Type submitOfferType = processorAssembly.GetType("Namespace.ClassA");

для чтения типа изсборка.

как получить производный тип из DLL?

Ответы [ 4 ]

2 голосов
/ 14 июня 2011

Измените это на:

Type submitOfferType = 
    processorAssembly.GetType("NamespaceOfProcessLibrary.ClassA");

Assembly.GetType требует полное имя класса.

1 голос
/ 14 июня 2011

Вы должны использовать Assembly.Load или Assembly.LoadFrom вместо Assembly.LoadFile. Попробуйте это:

Assembly processorAssembly = Assembly.Load(AssemblyName.GetAssemblyName("[...]process.dll"));
Type submitOfferType = processorAssembly.GetType("Namespace.ClassA");

Assembly.LoadFile не будет пытаться разрешить зависимости относительно файла, который вы загружаете с помощью LoadFile, поэтому он даже не попытается разрешить вашу библиотеку действий. По-видимому, это решит проблему невозможности загрузки типов из-за зависимостей, просто игнорируя их.

0 голосов
/ 14 июня 2011

Попробуйте найти точное полное имя «ClassA»:

Assembly processorAssembly = Assembly.LoadFile(process.dll);
var types= processorAssembly.GetTypes();

Проверьте имя «types» в отладчике, чтобы получить настоящее имя.

0 голосов
/ 14 июня 2011

Assembly.GetType ожидает полного имени типа.Это означает, что вы должны включить пространство имен.

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