2
這個例子沒有使用IServiceLocator來包裝我的Container的最佳做法,但它讓我有點困惑。爲什麼我的WindsorContainer無法解析IWindsorContainer?
我以爲WindsorContainer可以自動將自己解析爲IWindsorContainer?
var container = new WindsorContainer();
container.Register(Component.For<INeedWindsorContainer>()
.ImplementedBy<GiveMeWindsorContainer>()
.LifeStyle.Singleton);
實施INeedWindsorContainer的:
public class GiveMeWindsorContainer : INeedWindsorContainer
{
IWindsorContainer _container;
public GiveMeWindsorContainer(IWindsorContainer container)
{
_container = container;
}
}
這可能不過是不行的,因爲WindsorContainer不知道如何解決IWindsorContainer!
當然,我想出了一個立即解決的是:
var container = new WindsorContainer();
container.Register(
Component.For<IWindsorContainer>()
.Instance(container)
.LifeStyle.Singleton,
Component.For<INeedWindsorContainer>()
.ImplementedBy<GiveMeWindsorContainer>()
.LifeStyle.Singleton);
然而,這似乎有點奇怪給我,我做錯了什麼?