Catel 和继承自 base class
Catel and inheritance from base class
我有 2 个不同的视图模型,它们继承自一个基础视图模型。目前在基本控制器中有一些服务通过
解析
ServiceLocator.Default.ResolveType<xxx>
我知道这不是最好的方法,因为它破坏了 DI。我还读到,拥有多个构造函数是一种反模式。我应该如何威胁这种情况?由于大多数代码对于两个视图模型都是相同的
谢谢
为什么不在构造函数中注入这些服务?像这样:
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 字段使用它们。
我有 2 个不同的视图模型,它们继承自一个基础视图模型。目前在基本控制器中有一些服务通过
解析ServiceLocator.Default.ResolveType<xxx>
我知道这不是最好的方法,因为它破坏了 DI。我还读到,拥有多个构造函数是一种反模式。我应该如何威胁这种情况?由于大多数代码对于两个视图模型都是相同的
谢谢
为什么不在构造函数中注入这些服务?像这样:
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 字段使用它们。