Visual Studio中的构造函数依赖性代码段

Elg*_*des 13 .net c#

我发现自己在构造函数中添加了很多依赖项,如下所示:

public class SomeClass() {
    private ISomeService _service;
    private IAnotherService _anotherService;
    public SomeClass(ISomeService service, IAnotherService anotherService) {
        _service = service;
        _anotherService = anotherService;
    }
}
Run Code Online (Sandbox Code Playgroud)

编写它们非常繁琐,我一直在寻找Visual Studio中的代码片段来自动添加一个到构造函数但没有找到一个.

我想要的是:

  • 向构造函数添加依赖项时,某些代码段会自动创建一个局部变量并分配给它.

要么

  • 添加一个私有变量,然后一些片段自动将其添加到构造函数并将其分配给局部变量.

Ned*_*nov 13

如果你有你可以进入该领域的声明,然后选中它们打Alt-Enter,这将给你生成构造和现场作业的选项.

在此输入图像描述


and*_*chy 6

如果你没有Resharper,你可以在构造函数中添加参数,将赋值写入一个未存在的属性并按CTRL +..这将提示您选择为您自动创建属性或字段.

例如,你有这个类:

public class MyClass 
{ 
    public MyClass()
    { 
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将参数添加到构造函数和赋值:

public class MyClass 
{ 
    public MyClass(IDependency myDependency)
    { 
         this.myDependency = myDependency;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后点击CTRL +.在asignament线上,选择创建字段,你会得到这个:

public class MyClass 
{         
    IDependency myDependency;

    public MyClass(IDependency myDependency)
    { 
         this.myDependency = myDependency;
    }
}
Run Code Online (Sandbox Code Playgroud)


Sim*_*din 5

我不知道以前的版本,但是在 vanilla Visual Studio 2017 中,您实际上可以添加构造函数参数

public SomeClass(ISomeService service)
{ 
}
Run Code Online (Sandbox Code Playgroud)

然后将光标放在service“快速操作”上,您可以选择Introduce and initialize field _someService哪个将执行您想要的操作:

private readonly ISomeService _someService;

public SomeClass(ISomeService service)
{ 
    _someService = service;
}
Run Code Online (Sandbox Code Playgroud)