2013-10-10 45 views
0

我有一个名为IPlugin接口。这是在一个称为TimerClass的抽象类中实现的。然后有一个名为Test的类从TimerClass继承。类从抽象类,它实现接口,和装载该继承反射性

测试类是在它自己的DLL,并通过反射加载。

这工作得很好,如果我不使用TimerClass(只实现IPlugin在测试)。

我该反思加载测试类的接口(IPlugin)的代码看起来是这样的:当测试类被加载var operation = Activator.CreateInstance(type) as 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; 
    } 

的这部分代码。

起初我以为这可能是因为它试图加载抽象类TimerClass,但这似乎远远取因为此类是不是在同一个DLL中实现。我也调试了它,看着大会,对我来说似乎正确的类加载...

谁能告诉我为什么会发生这种情况,如果有一种解决方案,我没有看到?

+0

你能提供一个异常消息和调用堆栈信息吗? –

+0

它是在一堆线程中..如果我要找到它,你将不得不等待一段时间,我将不得不实施例外策略...... :)我希望以后可以这样做..所以任何猜测或预感是非常appriciated –

+0

你尝试使用Activator.CreateInstance(NameSpaceOfType.Type)? – FelProNet

回答

0

这embarresing ....

其原因它失败是,TimerClass有其定义的定时器的时间间隔的性质。这将停止和启动定时器,所以当在创建计时器面前这个叫......嗯....然后崩溃....

我很抱歉耽误你们时间了,但是非常感谢你很多帮助我!