Единичный компонент регистра Windsor для нескольких интерфейсов
Я хочу зарегистрировать один класс с двумя интерфейсами в Castle.Windsor.
работает ли этот код... Будет ли у меня только один экземпляр для обоих интерфейсов...
Component.For<IEnvironment>().ImplementedBy<OutlookEnvironment>().LifestyleSingleton()
Component.For<IOutlookEnvironment>().ImplementedBy<OutlookEnvironment>().LifestyleSingleton()
Мне нужно дважды проверить это, потому что моя среда всегда должна быть одним и тем же экземпляром...
Поэтому, когда я разрешаю использование интерфейса IEnvironment, я должен получить тот же экземпляр, что и при использовании IOutlookEnvironment для решения компонента
Ответы
Ответ 1
Вам нужно использовать перегрузку с несколькими обобщенными параметрами метода Component.For
Component.For<IEnvironment, IOutlookEnvironment>()
.ImplementedBy<OutlookEnvironment>()
.LifestyleSingleton()
См. также в документации: Регистрация компонента с несколькими службами.