如何在装配体中找到接口?对于插件系统

时间:2019-05-01 05:00:53

标签: c# reflection mono

我正在尝试创建插件系统,但出现“对象引用未设置为对象”错误。

我已经将每个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()”,但是我得到的对象引用未设置为对象。

0 个答案:

没有答案