2014-11-02 82 views
1

此問題可能只能由CM貢獻者回答。Caliburn.Micro 2.0和IViewAware實施問題

ViewAwareIViewAware的基本實現,它使用內部實用程序類WeakValueDictionary來緩存視圖。 IViewAware的外部實現者無法訪問此類。

CM 1.5.x依靠Dictionary<object, object>來實現緩存。

我不能在代碼中看到CM 2.0中的任何依賴關係,在執行IViewAware時需要使用WeakValueDictionary

我只是想確保我不會錯過某些微妙的東西?執行IViewAware時是否必須使用WeakValueDictionary,還是Dictionary<object, object>仍然足夠?

+0

我相信這是視圖緩存的結果,並且能夠在某些使用情況下禁用它,以及在其他平臺(wp/Silverlight)中使用WeakValueDirectionary的可用性。舊的codeplex網站對此進行討論的時間太長了。他們希望有一些能夠防止內存泄漏的可能性。有一張票打開和關閉與CM2.0納入變化有關的細節 – mvermef 2014-11-03 22:24:34

+0

欣賞背景。不要假設你知道在實現IViewAware時是否仍然可以使用Dictionary 的答案? – gravidThoughts 2014-11-12 00:12:41

回答

1

Dictionary<object, object>可以,只要你努力管理你的意見。 IViewAware沒有辦法清除視圖。在內置類Screen清除視圖上Deactivate這應該發生,只要你一起組合你的視圖模型。

使用WeakValueDictionary爲我們提供了一些蠕動空間,這意味着我們不會繼續使用不再使用的視圖。

我們當然可以考慮讓WeakValueDictionary可用來幫助這一點。