我有2个不同的视图模型,它继承自基础模型。目前在基本控制器中通过
解决了一些服务ServiceLocator.Default.ResolveType<xxx>
我知道它不是最好的方法,因为它打破了DI。我还读到它的反模式有多个构造函数。我应该如何威胁这种情况?由于视图模型的大部分代码都是相同的
由于
答案 0 :(得分:1)
为什么不在构造函数中注入这些服务?像这样:
public class BaseVM
{
protected readonly IService1 _service1;
public BaseVM(IService1 service1)
{
_service1 = service1
}
}
public class InheritedVM1: BaseVM
{
public InheritedVM1(IService1 service1, ...other args...): base(service1
{
//...
}
}
public class InheritedVM2: BaseVM
{
public InheritedVM2(IService1 service1, ...other args...): base(service1
{
//...
}
}
IoC将通过InheritedVM的构造函数注入您的服务,在使用注入的服务调用base之后,您可以使用_service1字段来使用它们。