我有一个名为 IPlugin 的接口。这是在一个称为 TimerClass 的抽象类中实现的。然后有一个名为 Test 的类,它继承自 TimerClass。
Test 类在它自己的 dll 中,并通过反射加载。
如果我不使用 TimerClass(只需在测试中实现 IPlugin),这将非常有效。
我将 Test 类反射性地加载为接口(IPlugin)的代码如下所示:
private IPlugin GetInterface(Assembly assembly)
{
IPlugin PluginFound = null;
var iPluginType = typeof (IPlugin);
var types = assembly.GetExportedTypes();
foreach (var type in types)
if (iPluginType.IsAssignableFrom(type))
{
var operation = Activator.CreateInstance(type) as IPlugin;
if (operation != null)
{
PluginFound = operation;
break;
}
}
return PluginFound;
}
这部分代码:var operation = Activator.CreateInstance(type) as IPlugin;
加载Test类时崩溃。
起初我认为它可能是它试图加载抽象类 TimerClass,但这似乎很遥远,因为这个类不是在同一个 DLL 中实现的。我还对其进行了调试,并查看了程序集,对我来说似乎加载了正确的类......
谁能告诉我为什么会发生这种情况,以及是否有我没有看到的解决方案?