У меня есть следующий код:Reflection для создания экземпляра класса в DLL
var type = typeof(PluginInterface.iMBDDXPluginInterface);
var types = AppDomain.CurrentDomain.GetAssemblies().ToList()
.SelectMany(s => s.GetTypes())
.Where(p => type.IsAssignableFrom(p));
Type t = types.ElementAt(0);
PluginInterface.iMBDDXPluginInterface instance = Activator.CreateInstance(t) as PluginInterface.iMBDDXPluginInterface;
TabPage tp = new TabPage();
tp = instance.pluginTabPage();
Класс в библиотеке DLL реализует PluginInterface и тип в приведенном выше коде, это определенно правильный класс/тип, однако, когда я пытаюсь создать экземпляр через интерфейс, я получаю сообщение об ошибке:
Ссылка на объект не присваивается экземпляру объекта.
Кто-нибудь знает почему?
Спасибо.
На какой строке вы получаете это исключение? – decyclone 2010-12-01 13:16:09
Я получаю его, когда вызываю метод instance.pluginTabPage. – 2010-12-01 13:18:24
Вам нужно лучшее сообщение об ошибке - измените свой `Activator.CreateInstance (t) как плагин ...` to `(плагин ...) Activator.CreateInstance (t)` – 2010-12-01 13:23:36