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 字段使用它们。