Dot-Net
IWindsorContainer 作為類的參數
我有一個類,我想訪問我的 IOC 容器(Windsor),但是我不想保留一個靜態的 IWindsorContainer 屬性——我希望容器將自身注入到任何需要 IWindsorContainer 的類中建構子依賴。
我已經用 Unity 完成了這個,但是當我對 Windsor 容器嘗試同樣的事情時,它告訴我 IWindsorContainer 沒有在容器中註冊。
我認為我不能只註冊 IWindsorContainer => WindsorContainer,因為這將導致容器創建一個新的(或不同的)自身實例以傳遞給我的類,並且該實例不會註冊我的所有其他類型它。我也看不到構造容器的方法,在其中註冊所有類型,然後針對 IWindsorContainer 註冊它自身的實例——所有註冊方法只接受服務和實現的類型——從來沒有一個實際的具體實例。
通常,您不想將容器注入您的應用程序組件中。
看到這些問題(這個問題幾乎是它們的重複):
順便說一句:您可以
IKernel免費獲得注射,您可以註冊IWindsorContainer:container.Register(Component.For<IWindsorContainer>().Instance(container));
通常,就像 mausch 所說,在將容器傳遞給組件之前要三思而後行。你真的需要它來訪問容器嗎?
要從容器中提取依賴項,請使用類型工廠。