2011-02-17 41 views
1

在MVVM應用程序中是否有使用Autofac的示例?我不確定如何控制MVVM環境中的對象的生命週期和處置。Autofac MVVM - Lifetime

我知道我可以在它下面創建一個生命週期並進行解析,但是看起來更像是一個服務定位器模式而不是IoC模式。

回答

3

我沒有一個公開的例子,但我已經在Silverlight應用程序中做了這個。我使用Silverlight navigation framework來組織最高級別的內容。當幀導航到一個新的頁面,我創建了壽命範圍中,我分辨頁面的根視圖模型,這是我與頁通過的屬性相關聯:

[ViewModel(typeof(OrdersViewModel))] 
public class OrdersView : Page 

當導航到不同的頁面幀,我在創建下一個範圍之前先處理了生命期範圍。

相同的模式適用於打開對話框。每個對話框都有自己的生命期範圍和視圖模型。當它關閉時,終身範圍得到處置。

還有一些情況不會沿着這些邊界整齊地落下。有時您需要更多的粒度,並可以使用contextual scopes更深入到終生範圍。這些情況通常是一次性的,並且涉及一些膠水以開始生命週期範圍。

我覺得按照units of work來考慮很有幫助:您在每個生命週期範圍的末尾提交更改。這使一組數據的extent成爲一個自然的生命週期範圍。

+1

http://code.google.com/p/whitebox/上提供的源代碼演示了類似的內容 - 使用導航標記工作單元邊界。它可能不是一個很明顯的例子,因爲有很多額外的噪音,但SessionViewModel和ApplicationModule可能會提供一些線索。 – 2011-02-19 02:09:38