【发布时间】:2013-06-29 20:10:00
【问题描述】:
我有一个 ViewManager 用于管理我的视图。它被放置在 App.View 命名空间中,并实现了一个 IViewManager 接口,放置在 App.ViewModel 库中。
问题是这个类被许多 ViewModel 使用,因为它们中的许多需要显示另一个 View。所以我需要在许多 ViewModel 中对 ViewManager 进行 ctor-inject,但其中一些需要创建一个工厂,所以我的问题是:
- 这是正常问题还是我在某些方面有问题?
- 新的 ViewModel 是否应该从 ShellViewModel 接收 ViewManager
例如:
var newVM = ViewModelFactory.Create(this.ViewManager, ...)(其中“this”是 ShellViewModel) 还是来自工厂? 例如:var newVM = ViewModelFactory.Create(...)(这意味着 ViewManager 是由容器注入到 Factory 中的)?
感谢大家的帮助!
编辑
namespace BM.ViewModel
{
public interface IViewManager
{
void Register<TViewInterface, TViewImplementation>(bool reset = false)
where TViewInterface : IView
where TViewImplementation : TViewInterface;
void Unregister<TView>()
where TView : IView;
void UnregisterAll();
TView GetView<TView>(BaseViewModel viewModel)
where TView : IView;
IEnumerable<IView> GetViews(BaseViewModel viewModel);
IEnumerable<IView> GetAllViews();
void CloseViews<TView>()
where TView : IView;
void CloseViews(BaseViewModel viewModel);
void CloseAllViews();
}
}
【问题讨论】:
标签: .net mvvm dependency-injection inversion-of-control