新对象时代码生成道具

Code generating props when newing object

我有一个具有 100 个属性的对象。 Resharper 或 Visual Studio 2017 中是否有为对象的所有属性生成代码的功能。例如

var myObject = new ObjectWithMultipleProps
{
   Prop1 = "",
   Prop2 = 0,
   Prop3 = "",
   ...etch
}   

我正在创建单元测试,如果可能的话,它会加快速度。

您似乎对创建实例的含义有误解。实例化对象(这是您调用 new ... 时)不可能对您的任何成员都没有价值。所有这些成员都从运行时初始化为该成员类型的默认类型。特别是您不能 部分初始化 您的对象,即仅将某些成员设置为初始值,而不设置其他成员。创建实例是一个全有或全无的操作。

所以如果你简单地这样写:

var myObject = new ObjectWithMultipleProps();

myObject中的所有属性将具有它们的默认值。您甚至可以打印它们:

Console.WriteLine(myObject.Prop2);  // this will print 0

您当然可以将所有这些赋值写入 class´ 构造函数:

class ObjectWithMultipleProps
{
    public ObjectWithMultipleProps()
    {
        Prop1 = null;
        Prop2 = 0;
    }
}

然而,这具有完全相同的效果。

无论如何,您可能会得到 NullReferenceException。这是因为所有引用类型默认为 null,对这些成员的任何调用都会产生该异常,如以下代码所示:

var a = myObject.Prop1.SubsString(0, 1);

因为 Prop1 被初始化为 null 一旦实例完全创建,你会得到一个 NullReferenceException,因为你不能调用 null 上的任何成员。

如果你想为你的成员使用其他默认值,你必须创建构造函数并在那里设置值。

输入这么多:

var myObject = new ObjectWithMultipleProps {

然后按Ctrl+J,Tab。下一个未使用的字段或 属性 将为您自动完成。你可以再按Ctrl+J,会弹出字段的类型,你可以选择合适的值。或者您可以开始输入 new 然后按 Ctrl+J 它会自动为您完成输入。

然后键入一个逗号,并对每个字段重复该过程。您已经指定的字段不会出现在列表中。如果您不想为某个字段设置值,则将其从初始化列表中省略,它将获得其默认值。