Призма, Единство - Преобразование из MEF - PullRequest
1 голос
/ 04 апреля 2011

Я недавно преобразовал из MEF в Unity - по разным причинам.

Ранее у меня был объект IMenuService в модуле, который я экспортировал с помощью MEF и импортировал в другие модули.Я полагаю, что я должен сделать с Unity, это взять контейнер Unity в качестве параметра для конструктора моего модуля, а затем использовать его для регистрации IMenuService, однако я не уверен, как это сделать (какой тип аргумента? DoЯ должен сначала зарегистрировать контейнер в загрузчике, чтобы импортировать его в модуль?)

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

РЕДАКТИРОВАТЬ : выяснил аргумент IUnityContainer ... однако, все еще интересует часть секунд ... зависимости

1 Ответ

1 голос
/ 04 апреля 2011

Как вы уже поняли, тип ваших модулей зависит от IUnityContainer. Вам на самом деле не нужно регистрировать контейнер для себя, чтобы иметь возможность работать с ним в модулях (хотя вы можете сделать это, если хотите, и прояснить ситуацию). И, наконец, зависимости модуля не зависят от используемого вами контейнера IoC, поэтому он должен работать нормально. Вы также можете настроить ModuleCatalog из xaml, используя:

protected override IModuleCatalog CreateModuleCatalog()
{
    return ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", UriKind.Relative));
}

и в файле catalog.xaml вы можете указать зависимости, используя свойство DependsOn ModuleInfo.

надеюсь, это поможет:)

...