簡體   English   中英

從實現接口的抽象類繼承的類,並進行反射性加載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM