繁体   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