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剛過統一的包裝。
其實,我已經使用了「瞬態」模式給多個實例。我在第一次在UserControl中使用它時緩存它。這可以讓我避免這個問題。 – kidoman 2011-04-09 11:20:19