dll中的可选extern接口实现

时间:2016-01-27 08:53:31

标签: c# dll interface

我正在创建一些集成库,它将接受各种接口实现以使其运行。

我有一个设置:

文库

interface IModule {
    void Init();    
}
interface IExample : IModule {
    void DoSomething();    
}
class Core {
   IExample Example {get; private set;}
}

Core类正在查找IModule类型的每个属性,并且对于每种类型,基于外部配置分配实现属性类型接口的实例对象。

然后我有一个满足Core要求的模块。

class MyExampleModule : IExample {
   public void Init() { }
   public void DoSomething() { }

   public void ExampleFeature1() { }
   public void ExampleFeature2() { }
}

我想在.dll中关闭模块MyExampleModule,我希望它在没有Core的环境中运行,它是IExample和I​​Module接口。 (我想要一个.dll,而不是两个环境w /和那些接口)。

有没有办法在C#中实现这一目标?如果不是(仅仅出于好奇的原因)是否有可能的语言?

1 个答案:

答案 0 :(得分:2)

不,你不能。 CLR需要与接口组装,因为它需要知道它们的外观。但是,如果您担心运送两个程序集(为什么?),则可以将它们与ILMerge合并。然而,这带来了其他问题和考虑因素。你打算将另一个模块与核心合并吗?这可能会导致运行时异常。

我不知道另一种可以做你想做的.NET语言。事实上,我怀疑还有其他语言支持实现代码附带的接口。