我已经实现了一个“插件”系统,我的应用程序在其中创建了在运行时实现接口以允许可插入功能的类。
我通过在插件程序集中实现指定接口的所有类上使用 Activator.CreateInstance 来实现这一点。
目前我只使用该类的一个实现,为此我有两个构造函数参数,并将它们包含在 Activator.CreateInstance 调用中:
instanceList.Add((Foo)Activator.CreateInstance(_TypeList[typeKey], new object[] { arg1, arg2 }));
我意识到如果添加了不使用此构造函数签名的实现,这可能会在以后引起问题。处理这个问题的最佳情况是什么。
通过文档明确说构造函数需要使用此签名,然后将其包围在 try/catch 中?
或者有没有办法调用一个类的任何构造函数?请记住,我必须以某种方式匹配构造函数参数。
或者...通过将参数作为静态属性放在静态类中来避免构造函数参数?