[英]Class which inherits from abstract class which implements interface, and loading this reflectively
我有一個名為IPlugin的接口。 這是在稱為TimerClass的抽象類中實現的。 然后有一個名為Test的類,該類繼承自TimerClass。
Test類位於它自己的dll中,並通過反射加載。
如果我不使用TimerClass(僅在Test中實現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類時崩潰。
起初我以為它可能試圖加載Abstract類TimerClass,但這似乎很不容易,因為此類不在同一DLL中實現。 我還調試了它,並查看了程序集,對我來說似乎已加載了正確的類...
誰能告訴我為什么會這樣,是否有我看不到的解決方案?
這真是令人難以置信。
它失敗的原因是TimerClass具有定義計時器間隔的屬性。 它將停止並啟動計時器,因此在創建計時器之前調用此計時器...好吧...然后崩潰....
很抱歉浪費您的時間,但是非常感謝您對我的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.