2011-04-09 54 views
0

讓我試着解釋我的問題。如何防止用戶控件的共享視圖模型?

我正在使用的ASP.NET Web窗體應用程序的MVVM模式。

每個用戶控件有一個後盾視圖模型,我使用初始化它們:

public TViewModelInterface ViewModel { 
    get { 
     return IoC.Resolve<TViewModelInterface>(); 
    } 
} 

這一行代碼中聲明,就像這樣ViewBase類中:

public abstract class ViewBase<TUserControl, TViewInterface, TViewModelInterface> : UserControl, IView 
    where TUserControl : UserControl 
    where TViewInterface : class, IView 
    where TViewModelInterface : class, IViewModel { 

現在,這一切都很好,並罰款只要UserControl不在同一ASPX頁面的多個位置使用。

當做到這一點,嘭!兩個UserControl實例共享相同的TViewModelInterface實例!

直到現在我是用每請求初始化策略視圖模型接口。我想使它瞬態和緩存實例的ViewBase內的(所以本質上是一個用戶控件實例內)。

是最好的辦法?我希望我明確提出了我的問題。

PS:IoC.Resolve剛過統一的包裝。

回答

0

如果我理解正確的話,這只是適當地配置你的依賴容器的問題。你似乎以每種Resolve<TViewModelInterface>查詢產生相同實例的單態模式進行解析。例如,可以選擇多個或多個其他修改 - 每個查詢產生一個新實例。

乾杯,

保羅

+0

其實,我已經使用了「瞬態」模式給多個實例。我在第一次在UserControl中使用它時緩存它。這可以讓我避免這個問題。 – kidoman 2011-04-09 11:20:19

相關問題