2
この例では、IServiceLocatorを使用してコンテナをラップするのにベストプラクティスを使用していませんが、少し難解です。WindsorContainerがIWindsorContainerを解決できないのはなぜですか?
私はWindsorContainerが自動的にIWindsorContainerとして解決できると思いましたか? INeedWindsorContainerの
var container = new WindsorContainer();
container.Register(Component.For<INeedWindsorContainer>()
.ImplementedBy<GiveMeWindsorContainer>()
.LifeStyle.Singleton);
実装:WindsorContainerはIWindsorContainerを解決する方法を知らないので、
public class GiveMeWindsorContainer : INeedWindsorContainer
{
IWindsorContainer _container;
public GiveMeWindsorContainer(IWindsorContainer container)
{
_container = container;
}
}
しかしこれは、動作しませんでした!
もちろん私が思いついたとした迅速な解決策:
var container = new WindsorContainer();
container.Register(
Component.For<IWindsorContainer>()
.Instance(container)
.LifeStyle.Singleton,
Component.For<INeedWindsorContainer>()
.ImplementedBy<GiveMeWindsorContainer>()
.LifeStyle.Singleton);
しかし、これは私には少し奇妙に思えるが、私が何か間違ったことをやっていますか?