2011-03-13 69 views
0

在這個快速入門例子,CreateShell()有PRISM 4 UICompositionQuickStart問題

ShellView view = this.Container.TryResolve<ShellView>(); 

我的問題是如何在shellview得到,而沒有經過視圖模型參數創建。 Shellview的構造函數定義爲

public ShellView(ShellViewModel viewModel) 
{ 
    // ... 
} 

謝謝。

回答

0

這就是依賴注入的要點。如果容器本身不能實例化具有相關性的對象,那麼使用它就不太實際。

答案是容器反映在ShellView上,並找到具有最多參數的構造函數(這裏很簡單,因爲只有一個可供選擇)。然後,對於每個參數,它查找它的類型ShellViewModel,然後遞歸地嘗試找出如何實例化參數。

假設在某些時刻依賴關係的「樹」結束了(它找到沒有構造器參數的依賴關係,如ShellViewModel),它開始構建依賴關係並最終到達您請求的對象。

在這個例子中,它看到它可以輕易地創建一個ShellViewModel(並且這樣做),然後用該對象作爲參數調用ShellView構造函數。

+0

感謝您的解釋。 – 2011-03-13 15:11:58