Где лучше регистрировать типы WPF
Мне надо регистрировать типы (использую Autofac). Стоит ли нагружать класс App в WPF непосредственно регистрацией типов внутри метода OnSturtup (объявлять IContainer, ContainerBuilder итд) или стоит сделать отдельные классы которые будут только регистрировать типы, а затем уже вызывать методы регистрации внутри OnSturtup?
Сейчас надо регистрировать 3 типа, однако это только начало.
По идее класс App нужен для определения общих ресурсов для приложения и поэтому можно регистрировать прямо сразу в классе, но тогда класс App будет засорен существованием IContainer и прочих сущностей. Не лучше ли вынести это в отдельные классы? А может стоит регистрировать типы вообще где-то в другом месте?
Правда не знаю в каком. Помогите определиться с тем "как правильно"
Ответы (1 шт):
На мой взгляд, ваш случай хорошо разобран в prism(autofac/unity). Один из авторов сего фреймворка - Brian Lagunas(Microsoft MVP, Xamarin MVP, Microsoft P&P Champion etc). Человек явно что-то понимает в архитектуре приложений, если, по крайне мере, раньше этот фреймворк часто использовали в корпоративных приложениях.
Ниже пример #20
В библиотеке объявляем свой инициализатор:
public class ModuleAModule : IModule
{
public void OnInitialized(IContainerProvider containerProvider)
{
}
public void RegisterTypes(IContainerRegistry containerRegistry)
{
//Что-то регистрируем
}
}
В самом приложении добавляем наши библиотеки-модули:
public partial class App : PrismApplication
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
//Здесь регистрируем локальные сервисы
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
//Наш модуль
moduleCatalog.AddModule<ModuleA.ModuleAModule>();
}
}