繁体   English   中英

将参数添加到基本 class 构造函数,自动添加到所有后代

[英]Adding parameter to base class constructor, auto-add to all descendants

我正在尝试改进一些代码以在我的视图 Model 中取出服务定位器的初始化和使用,以便容器可以在构造函数中创建它们。 但是有数百个后代的基类发生了变化,这需要很长时间才能手动修复每个人。

Visual Studio 或任何其他加载项是否可以为您执行此操作? 在后代上,它需要将其添加到主构造函数中,并将其传递给基本构造函数。 全部只有一个构造函数。

例如,我刚刚将 someNewInjectedClass 参数添加到下面的基本 class 构造函数中:

public class BaseClass
{
    private ISomeNewInjectedClass _someNewInjectedClass;

    public BaseClass(ISomeNewInjectedClass someNewInjectedClass)
    {
        _someNewInjectedClass = someNewInjectedClass;
    }
}

这需要添加到我的后代中,目前是这样的:

public class OneOfManyDecendants : BaseClass
{
    public OneOfManyDecendants() 
        : base()
    {

    }
}

变成这样:

public class OneOfManyDecendants : BaseClass
{
    public OneOfManyDecendants(ISomeNewInjectedClass someNewInjectedClass) 
        : base(someNewInjectedClass)
    {

    }
}

如果您有 Resharper,您可以使用“更改签名”(Ctrl+R,S) 重构。 执行此操作时 select “使用调用树解决”选项。 在下一个对话框中,为每个子类选择“创建参数...”选项。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

不是我的确切问题的完全答案,但我将在 @sinatr 的建议中使用 go 的相关帖子:使用 class 作为基本参数的单个参数

这似乎是我们前进的最佳方式,并且将来可以更容易地改变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM