Как инициализировать один класс из библиотеки? - PullRequest
2 голосов
/ 18 июня 2010

У меня есть несколько классов в библиотеке классов (отдельная сборка).Я ссылался на него в своем проекте и хочу инициализировать один конкретный класс из этой библиотеки.Я знаю только его имя.Все классы реализуют один интерфейс.И тут возникает проблема.

Мой код пока:

using MyLibrary;
...
IMyInterface dll = Activator.CreateInstance("MyLibrary", "MyLibrary.NameOfClass") as IMyInterface;

Но dll всегда нулевая.Есть идеи?

Спасибо

ОБНОВЛЕНИЕ

Я удаляю ссылку на библиотеку и переписываю этот код в:

Assembly a = Assembly.Load("MyLibrary");
Type type = a.GetType("MyLibrary.SKClass");
IMyInterface obj = Activator.CreateInstance(type) as IMyInterface;

но obj имеет значение null.

Если я проверял типы библиотек с помощью a.GetExportedTypes (), SKClass там.Так почему же этот код по-прежнему возвращает ноль?

Ответы [ 2 ]

2 голосов
/ 18 июня 2010
var assembly = Assembly.LoadFile(@"full\path\to.dll");

var type = assembly.GetType("Full.Namespace.Type");

var object = Activator.CreateInstance(type);
0 голосов
/ 18 июня 2010

Почему вы не используете это ...?

Assembly a = Assembly.Load ("ClassLibrary1");Interface1 i = a.CreateInstance ("ClassLibrary1.ClassName") как Interface1;

Необходимо ли использовать Activator ...?

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