如何防止用户控件共享视图模型
本文关键字:视图 模型 共享 控件 何防止 用户 | 更新日期: 2023-09-27 17:49:46
让我试着解释一下我的问题。
我在ASP中使用MVVM模式。. NET Web Forms应用程序。
每个用户控件都有一个后台视图模型,我正在初始化它们使用:
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(所以本质上在一个UserControl实例。)
这是最好的方法吗?我希望我把问题讲清楚了。
PS:国际奥委会。Resolve只是Unity的一个包装。
如果我理解正确的话,这只是一个适当配置依赖容器的问题。您似乎以单例模式解决,该模式为每个Resolve<TViewModelInterface>
查询产生相同的实例。可以选择在多个或多个其他模式中解析-例如,每个查询生成一个新实例。
欢呼,保罗