dymanoid
dymanoid

Reputation: 15197

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?

Upvotes: 8

Views: 1283

Answers (1)

Wim Coenen
Wim Coenen

Reputation: 66723

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

Upvotes: 10

Related Questions