給出兩個A和B類,其中B依賴於A(注入的構造函數); B在基礎容器中被註冊爲SingleInstance,並且它被構建。 A在MultiTenantContainer中作爲SingleInstance註冊,根據tenantId而不同。Autofac:具有多租戶依賴性的單實例對象
問題1:將
Resolve<B>()
認識到B還必須tenantId有什麼不同?
問題2:相同,但A被登記爲壽命範圍的多租戶容器內和B取決於
Func<Owned<A>>.
更新:閉合!
這是一個「我想要的確實是想要的......」的情況,因爲我的初學者對語義缺乏理解;具體而言,我需要在租戶生命週期範圍內建立/共享跨所有分辨率的實例,該實例不存在。得到了一些指導,在問題#318上提交了一個補丁,它在變更集752中被拉到了主幹上,我們很高興去!現在,上面的問題將如下:
給定兩個A和B類,其中B依賴於A(構造函數注入); B在基礎容器中註冊爲InstancePerTenant,並且它已構建。 A被登記在MultiTenantContainer作爲InstancePerTenant,在tenantId不同...
和回答這兩個問題現在是「是」。
感謝特拉維斯和尼克的幫助和維護這個偉大的工具。
感謝。我開始仔細閱讀資料來了解這一點,而且很快就會明白,這一切都是關於生命的。我很好奇你提到的「保護」。不「擁有」的實例繞過嗎? – 2011-03-29 04:10:42
重讀你的第二個方案,我不是你的意思是由一個昭然若揭 - 在多租戶方面是否仍然參與了第二個方案......但是,是的,你說得對'Owned'改變規則,但它可能會以你所期望的方式出現。這裏的大圖的一些更多細節可能會有所幫助。乾杯! – 2011-03-29 10:47:24
我是新來Autofac和我的問題是獲得這種工具本身,而不是它的應用程序的瞭解,所以抽象的格式是一個更適合。無論如何,它看起來像是一個非啓動器,因爲MTC通過使用'BeginLifetimeScope(Action)'在子生命週期範圍內註冊租戶特定組件來操作。當只在MTC(子生存期範圍)中註冊「A」時,任何試圖解析「B」(在根上註冊)的嘗試都將導致「DependencyResolutionException」。 –
2011-03-30 17:11:40