简体   繁体   中英

How does MEF manage to instantiate an exported part which is an internal class of an external assembly?

My question is pretty simple, but unfortunately I could not find any answer yet.

Using MEF , I can specify some internal exports and imports in a class library assembly like that:

[Export]
internal class SomeExport
{ }

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

My CompositionContainer is located in the main EXE assembly, but somehow it manages to instantiate the SomeExport object inside the class library assembly so I can use it. Normally, my internal class library types should not be accessible from the EXE assembly, but somehow I get my instances created.

How does it work?

MEF typically uses reflection to discover parts and instantiate them. Reflection is not limited by internal or even private visibility.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM