我有一個WPF視圖有一個相應的ViewModel。所有實例都通過統一容器解決。因爲我使用棱鏡,所以我需要兩個獨立的視圖實例將其添加到視圖註冊到的兩個不同區域。如果我想嘗試一個實例添加到這兩個區域,我得到一個有沒有配置TransientLifetimeManager
InvalidOperationException異常:指定 元素已經是另一個元素的邏輯子 。首先斷開它 。
當視圖被添加到第二個區域時,因爲它已被添加到第一個區域。
這個問題很容易通過使用一個總是返回一個新實例的TransientLifetimeManager來解決,因此這兩個區域都會被一個獨立實例填充。
但是我們決定在新用戶登錄時創建一個子容器。每個會話相關的視圖和視圖模型都使用此子容器進行解析。當用戶的會話結束時,處理子容器,以便還處置每個與會話有關的實例。但是使用TransientLifetimeManager時,統一容器不能處理這些實例。
我們需要的是一個總是返回一個新實例但也能夠處理這些實例的終生管理器。有沒有這樣的人生經理?還是有另一種方法來實現我上面描述的?
對於那些閱讀答案的人:「使有資格成爲GC'ed」並不意味着要求[立即或技術上的]處置「。對於嚴格的範圍/壽命來說,這是一個很大的差異。 – user2864740 2015-03-03 21:47:56