C#中是否可以使用类初始值设定项?

在C#中,您有对象初始值设定项来初始化对象at creation time without using a constructor的字段.

现在我想知道是否存在类的等价物,这意味着在定义子类时可以“初始化”类的属性而不实际使用覆盖语法,而只是声明已知属性的值是什么.

例:

public abstract class Car {
    public abstract string Name { get; }
}
// usual approach
public class Mustang : Car {
    public overwrite string Name { get { return "Ford Mustang"; } }
}
// my idea of avoiding boilerplate code
public class Mustang : Car { Name = "Ford Mustang" }

有没有办法实现这个目标?如果没有,T4模板可以提供任何帮助吗?

最佳答案
为了让rekire的例子更加清晰,你可以写下这样的东西:

public abstract class Car
{
    public string Name { get; private set; }

    protected Car(string name)
    {
        this.Name = name;
    }
}

public class Mustang : Car
{
    public Mustang() : base("Mustang")
    {
    }
}

编辑:另一种选择是使用属性,你写的地方:

[CarName("Mustang")]
public class Mustang : Car

…在Car中编写了适当的反射代码.我强烈建议你不要这样做.当然,属性在您的真实环境中可能很有用.

转载注明原文:C#中是否可以使用类初始值设定项? - 代码日志