我有一个 ViewManager 用来管理我的视图。它被放置在 App.View 命名空间中,并实现了一个 IViewManager 接口,放置在 App.ViewModel 库中。
问题是这个类被许多 ViewModels 使用,因为它们中的许多需要显示另一个 View。所以我需要在许多 ViewModel 中对 ViewManager 进行 ctor-inject,但其中一些需要创建一个工厂,所以我的问题是:
- 这是一个正常问题还是我在某些方面错了?
- 新的 ViewModel 应该从 ShellViewModel ex:
var newVM = ViewModelFactory.Create(this.ViewManager, ...)
(其中“this”是 ShellViewModel)还是从工厂接收 ViewManager?例如:(var newVM = ViewModelFactory.Create(...)
这意味着 ViewManager 是由容器注入到工厂的)?
感谢大家的帮助!
编辑
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();
}
}