7
在溫莎城堡的場景我想檢查我的容器註冊了一定的服務,並做基本上檢查溫莎有一個匹配的組件註冊
if (container.HasComponentFor<IMyService>()) {
// resolve service with container.Resolve<IMyService>()
// then do cool stuff
}
但當然,container.HasComponentFor<IMyService>()
不存在。有沒有相同的東西?
這似乎是最好的選擇。我想我會在'IWindsorContainer'上編寫一個擴展方法來匹配我想要的語法} – 2015-02-06 13:19:54
@TomasLycken我試圖在這段代碼中產生異常 'if(Ioc.Container.Kernel.HasComponent(typeof(myInterface ))) { Ioc.Container.Release(Ioc.Container.Resolve()); Ioc.Container.Register(Component.For ().Instance(myObjectInstance).LifeStyle.Transient); }' 但是,當我嘗試在if語句內註冊組件時,即使它已經發布,也會導致錯誤。它說該組件已經註冊。我的城堡windsor組件版本是2.5.1 –
RBT
2016-03-01 10:20:38
釋放不會從容器中移除組件。如果您需要添加一個覆蓋現有組件的新組件,則只需將其添加爲「IsDefault()」,即if(Ioc.Container.Kernel.HasComponent(typeof(myInterface))) { \t Ioc .Container.Register(Component.For().Instance(myObjectInstance).IsDefault()。L ifeStyle.Transient); }' –
2016-03-01 15:52:16