Как найти интерфейс в сборках?Для системы плагинов - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать систему плагинов, но получаю ошибку «Ссылка на объект не установлена ​​на объект».

Я загрузил каждую dll как сборку, затем использовал Assembly.GetTypes (). Я перебираю свои типы, чтобы найти интерфейс IPlugin. Затем я использую Activator.CreateInstance (), чтобы создать новый IPlugin для ссылки и добавить его в свой список плагинов.

           foreach(string dll in dllFiles) {
                AssemblyName an = AssemblyName.GetAssemblyName(dll);
                Assembly assembly = Assembly.Load(an);

                Type[] types = assembly.GetTypes();

                foreach(Type type in types) {
                    if(type.GetInterface(PluginType.FullName) != null) {
                        IPlugin plugin = Activator.CreateInstance(type) as IPlugin;
                        Plugins.Add(plugin);
                        Console.WriteLine("Added a plugin!");
                    }
                }
            }

Я ожидаю, что смогу перебрать свой список плагинов и вызвать метод "Do ()" в каждом, но я получаю ссылку на объект, не установленную для объекта.

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