2014-11-26 1 views
5

Мой вопрос довольно прост, но, к сожалению, я пока не нашел ответа.Как MEF удается создать экземпляр экспортированной части, которая является внутренним классом внешней сборки?

Использование MEF, я могу указать некоторый внутренний экспорт и импорт в сборке библиотеки классов, как, что:

[Export] 
internal class SomeExport 
{ } 

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

Моего CompositionContainer расположен в основной сборке EXE, но как-то удается создать экземпляр SomeExport объекта внутри сборку библиотеки классов, чтобы я мог ее использовать. Обычно мои внутренние библиотеки классов классов не должны быть доступны из сборки EXE, но каким-то образом я создаю свои экземпляры.

Как это работает?

+1

Внутренние классы доступны через отражение. –

ответ

6

MEF обычно использует отражение для обнаружения деталей и их создания. Отражение не ограничено internal или даже private видимость.