Bas*_*ian 3 c# abstract-class boilerplate object-initializers subclassing
在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" }
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?如果没有,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")
{
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:另一种选择是使用属性,你写的地方:
[CarName("Mustang")]
public class Mustang : Car
Run Code Online (Sandbox Code Playgroud)
......写了适当的反思代码Car.我强烈建议你不要这样做.当然,属性在您的真实环境中可能很有用.
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |