如果我爲相同的服務註冊兩個組件,例如當我嘗試解決多個註冊的單個組件時,是否可以讓Castle Windsor投訴?
container.Register(
Component.For<IThing>.ImplementedBy<Thing1>(),
Component.For<IThing>.ImplementedBy<Thing2>())
我覺得很奇怪,如果我Resolve
上IThing
的依賴或要求其手動解決,溫莎就乾脆挑一個給我(第一或Thing1
,它出現)。
我理解這可能是有益的在某些情況下,讓一個註冊爲「覆蓋」另一個通過獲取先在註冊組件列表。
是否有指定當IThing
服務單獨解決的是一個例外,應在這種情況下拋出的方法嗎?
我擔心的是開發人員可以很容易地指定他想要一個IThing或多個IThings(例如IThing [])。我們可能會從第三方加載插件,並且他們要安裝自己的IThing處理程序,我們可能有一個難以診斷的情況,他們在想「爲什麼我的IThing不能使用」。如果配置遭到破壞,我們認爲這是一項全球服務,事實上正在爭奪,這將是一個問題。如果我理解正確,你的測試將阻止用戶獲得IThing []集合。 – 2011-05-03 15:07:56
該測試會做你告訴它。您可以爲集合添加特殊情況 – 2011-05-04 03:05:32