【发布时间】:2016-03-07 12:25:55
【问题描述】:
Unity 和 DI 新手。我正在将容器传递到我的视图模型中并调用 .Resolve 当我想要一个我现在知道是不好的做法的新视图实例时。
我现在通过一个简单的工厂类解析视图,该工厂类作为接口传递到视图模型构造函数中:
this.dialogView = this.dialogViewFactory.CreateDialogView();
我在 Unity 中调用 RegisterType 来解析视图和视图模型:
this.unityContainer.RegisterType(typeof(IDialogView), typeof(DialogView));
this.unityContainer.RegisterType(typeof(IDialogViewModel), typeof(DialogViewModel));
this.unityContainer.RegisterType(typeof (IDialogViewFactory), typeof (DialogViewFactory));
最后,我的工厂课。我目前正在传递容器并在此处调用 resolve。我知道虽然我已将依赖项移出视图模型,但我仍然在工厂类中拥有容器依赖项:
public class DialogFactory : IDialogFactory
{
private IUnityContainer unityContainer;
public DialogFactory(IUnityContainer unityContainer)
{
this.unityContainer = unityContainer;
}
public IDialogView CreateDialogView()
{
return this.unityContainer.Resolve<IDialogView>();
}
}
什么是最好的解决方案?
【问题讨论】:
标签: c# dependency-injection unity-container