MEF如何管理实例化导出的部件,该部件是外部组件的内部类?

时间:2014-11-26 13:38:56

标签: c# .net mef .net-assembly composition

我的问题非常简单,但遗憾的是我找不到任何答案。

使用MEF,我可以在类库程序集中指定一些内部导出和导入:

[Export]
internal class SomeExport
{ }

[ModuleExport(typeof(SomeModule))]
internal class SomeModule : IModule
{ 
    [ImportingConstructor]
    internal SomeModule(SomeExport instance)
    { }
}

我的CompositionContainer位于主EXE程序集中,但不知何故它设法在类库程序集中实例化SomeExport对象,以便我可以使用它。通常,我的内部类库类型不应该从EXE程序集中访问,但不知何故我创建了我的实例。

它是如何运作的?

1 个答案:

答案 0 :(得分:9)

MEF通常使用反射来发现部件并实例化它们。反射不受internal甚至private可见性的限制。