在设计时,有没有办法在Visual Studio 2010中初始化具有所有属性的对象?

Mat*_*att 10 c# resharper visual-studio-2010

背景

我在VS 2010,.NET 4,C#中编​​写代码.此外,如果重要,我使用的是最新版本的ReSharper.

假设我有这个模型:

public class SomeObject
        {
            public string Red{ get; set; }
            public string Green{ get; set; }
            public string Blue{ get; set; }
            public string Yellow{ get; set; }
            public string Purple{ get; set; }
            public string Orange{ get; set; }
            public string Black{ get; set; }
        }
Run Code Online (Sandbox Code Playgroud)

在代码的其他地方,我需要实例化其中一个对象,如下所示:

SomeObject myObject = new SomeObject{
                                     red = "some value", 
                                     blue = "some other value",
                                     . . .,
                                     black="last value"
                                    };
Run Code Online (Sandbox Code Playgroud)

*注意:*我有时希望仅使用其总可能属性的一部分(即红色和蓝色)初始化此对象.

目前,我必须为每个新实例输入每个属性(红色,蓝色,绿色等)SomeObject.在VS2010中是否有热键或某些东西预先填充了这些属性,所以我只需要为每个属性分配值而不是键入每个属性?

brg*_*ner 8

您可以使用智能代码完成.

写:new SomeObject {

然后按Ctrl + Alt + Space: - >工具提示窗口中列出了所有可能的属性

然后选择一个属性(即'Red')并按ENTER - > new SomeObject {Red =}

然后输入","再按一次Ctrl + Alt + Space,选择下一个属性,依此类推.


Ree*_*sey 2

目前,我必须为 SomeObject 的每个新实例输入每个属性(红色、蓝色、绿色等)。

就个人而言,如果您需要为每个对象实例设置这些,我将通过添加一个采用所有参数的构造函数来处理这个问题,而不是使用对象初始化语法。这将为您提供完整的智能感知,但也帮助/强制您每次都正确构造对象。

请记住,类型的构造函数强制您提供将对象正确初始化为正确状态所需的所有参数。对象初始值设定项的一个缺点是它们不会在编译时强制执行此操作。因此,如果每个对象实例都需要所有这些属性,则构造函数应提供它们,而不是使用对象初始值设定项。

  • 请注意,这在 C# 4 中也更容易,因为您可以在构造函数中使用可选参数和命名参数。您可以拥有一个具有默认值的构造函数,并根据需要进行重写 - 甚至在特殊情况下使用命名参数进行重写。 (2认同)