C#中的类初始化器是否可行?

在C#中,您可以使用对象初始值设定项在创建时初始化对象的字段, 而无需使用构造函数 。

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

例:

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中写了适当的reflection代码。 我强烈建议你不要这样做。 当然,属性在您的真实环境中可能很有用。

您可以通过construtor执行此操作,您需要在其中调用基类构造函数。

 class car { Public string Name {public get; protected set} } 

这应该基本上也可以。