Как мне зарегистрировать тип в коде, используя MEF? - PullRequest
3 голосов
/ 16 декабря 2011

У меня есть экземпляр пользовательского типа, который должен быть зарегистрирован в коде:

container.RegisterType( typeof(Isome), myvar);

, поэтому его можно использовать как обычно:

 [Import] 
 ISome var1 ;

Как получить ссылкув контейнер?

1 Ответ

0 голосов
/ 16 декабря 2011

Я не знаю про Prism, но в MEF вы не регистрируете типы в контейнере - это вводит зависимость, которая отрицает цель разъединения кода.

Что вы делаете для того, чтобы тип ISome был доступен для обнаружения MEF, вы помещаете атрибут [Export(typeof(ISome))] в ваш класс, который реализует интерфейс ISome.

В составе MEF увидит атрибут Import, связанный с типом интерфейса ISome, а затем начнет искать соответствующий Экспорт с ключом для типа интерфейса ISome. Он найдет ваш класс реализации с атрибутом Export. MEF создаст экземпляр экспортируемого класса и присвоит его свойству import для вас.

На этапе компоновки необходимо предоставить каталог типов или сборок для загрузки MEF и выполнения магии поиска совпадений. Убедитесь, что сборка, содержащая ваш класс реализации, находится в этой группе каталогов.

...