У меня есть приложение WPF MVVM, в котором есть сборка модели и служб. Я пытаюсь выяснить, как использовать контейнер Windsor для разрешения локальных (сервисы на уровне сервиса) зависимостей, но единственное, что я могу выяснить, - это глупость и неправильность.
Услуги установщика:
public class ServicesInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
//Services
container.Register(
Component.For<IServiceA>().ImplementedBy<ServiceA>().LifeStyle.Singleton,
Component.For<IServiceB>().ImplementedBy<ServiceB>().LifeStyle.Singleton
}
}
Потребитель услуг (находится в сфере услуг):
public class ServiceConsumer
{
public SomeMethodThatUsesServiceAOnlyOcassionally()
{
//buncha logic.
if (allThatFailed)
{
??? ResolveServiceA ???
}
}
}
Поскольку я часто не зависим от ServiceA, я не хочу передавать его через внедрение конструктора или свойства. Я бы добавил в установщик экземпляр статического контейнера, но я должен верить, что есть более идиоматическое решение, чем это.