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

时间:2016-01-21 15:27:09

标签: c# .net

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

console.log(e)

他们编写起来相当繁琐,我一直在寻找Visual Studio中的代码片段来自动添加一个构造函数,但却找不到它。

我想要的是:

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

OR

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

6 个答案:

答案 0 :(得分:13)

如果您有R#,则可以输入字段声明,然后突出显示它们并点击Alt-Enter,这将为您提供生成构造函数和字段分配的选项。

enter image description here

答案 1 :(得分:6)

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

例如,你有这个类:

public class MyClass 
{ 
    public MyClass()
    { 
    }
}

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

public class MyClass 
{ 
    public MyClass(IDependency myDependency)
    { 
         this.myDependency = myDependency;
    }
}

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

public class MyClass 
{         
    IDependency myDependency;

    public MyClass(IDependency myDependency)
    { 
         this.myDependency = myDependency;
    }
}

答案 2 :(得分:1)

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

public SomeClass(ISomeService service)
{ 
}

然后将光标放在service上,然后从“快速操作”中选择Introduce and initialize field _someService即可完成您想要的操作:

private readonly ISomeService _someService;

public SomeClass(ISomeService service)
{ 
    _someService = service;
}

答案 3 :(得分:0)

您可以根据需要轻松添加代码片段,在XAML中定义代码片段并将其添加到editior中,您可以使用“类名”等占位符将其用作构造函数,然后将变量放入其中静态文本

我不想编写代码,因为它是重复的 你可以在这里查看如何做到这一点: https://msdn.microsoft.com/en-us/library/ms242312.aspx?f=255&MSPPError=-2147217396

你也可以看到这个问题: How can I automatically generate a constructor that receives and stores services for free?

答案 4 :(得分:0)

您正在尝试使用ISomeService和IAnotherService执行依赖项倒置。

我强烈建议您将此与依赖注入框架结合使用。有许多可用,但我建议的是MEF。 MEF构建在.net框架中。例如,您的代码看起来像MEF

[Export(typeof(ISomeService))]
public class SomeService : ISomeService {
}


public class SomeClass {

   [Import]
   public ISomeService SomeService {get; set;}

   [Import]
   public IAnotherService AnotherService {get; set;}

}

现在,MEF将确保在创建类时填充SomeService和AnotherService属性。它将构造(如果需要)SomeService的实例,填充它的所有依赖项并将其放在正确的属性中。您甚至可以控制是否希望每次需要时将服务实例化为单例或新服务实例。

有关MEF的详细信息,请查看此处https://msdn.microsoft.com/en-us/library/ee155691(v=vs.110).aspx

这应避免编写除初始化服务之外什么都不做的许多构造函数。

答案 5 :(得分:0)

Telerik的JustCode可以完全满足您的需求 如果构造函数中有未使用的参数,则可以创建一个字段并对其进行初始化。 http://www.telerik.com/products/justcode/quick-fixes.aspx