我有一个类,我想访问我的IOC容器(Windsor),但我不想保持静态IWindsorContainer属性 - 我宁愿让容器注入任何需要IWindsorContainer的类中构造函数依赖项.
我已经用Unity取消了它,但是当我使用Windsor容器尝试相同的事情时,它告诉我IWindsorContainer没有在容器中注册.
我不认为我可以只注册IWindsorContainer => WindsorContainer,因为这将导致容器创建一个新的(或不同的)自身实例传递给我的类,并且该实例将不会注册所有其他类型它.我也没有看到构造容器的方法,注册其中的所有类型,然后针对IWindsorContainer注册自己的实例 - 所有注册方法只接受服务和实现的类型 - 从来不是实际的具体实例.
通常,您不希望将容器注入应用程序组件.
看到这些问题(这个问题几乎与它们重复):
IoC容器的用法; 特别是温莎
NInject:你在哪里保留对内核的引用?
IoC,你把容器放在哪里?
顺便说一下:你可以IKernel
免费注射,你可以注册IWindsorContainer
:
container.Register(Component.For().Instance(container));