14

對於Castle Windsor,我可能有一個簡單的問題,我很久沒有使用它了。我試圖用一個特定的實例來註冊一個服務,該實例將是該服務的單例實現。指定與Castle Windsor組件註冊實例

容器無法嘗試創建服務本身的實現,因爲它具有容器無法解析的依賴關係。我有一個服務的實例,我希望它是用於請求服務的任何人的唯一實例。但我似乎運氣不多。

我瞬間曾提出通過使用此代碼的希望:

container.Register(Component.For<IMyInterface>().Instance(serviceObj)); 

但是,所有的城堡與實例確實是它做.GetType()和註冊類型。對服務的請求隨後會導致容器嘗試創建該類型,並在無法填充依賴項時失敗。

那麼有什麼辦法可以做我想在這裏做的事嗎?如果沒有,我會創建一些IServiceProvider來獲取服務的實例,並且沒有依賴關係來填充容器。但這種感覺更像是一種解決問題的方法。

有什麼建議嗎?謝謝!

回答

21

嘗試在容器的內核對象上使用AddComponentInstance方法。我認爲這是你需要的。


請注意:這種技術現在已經過時。使用container.Register(Component.For<T>().Instance(myT));,而不是(感謝eouw0o83hf)

+0

感謝Gerrie和博揚!工作過一種享受。 – 2009-05-29 10:43:49

2

你可以做到這一點通過容器的Kernel屬性:

container.Kernel.AddComponentInstance<IMyInterface>(serviceObj); 
相關問題