ast*_*tef 5 c# abstract-class properties
我应该选择哪种方法?为什么?有什么真正的区别吗?
抽象属性:
abstract class Table
{
public abstract string Title { get; }
}
class InfoTable : Table
{
public override string Title
{
get { return "Info"; }
}
}
Run Code Online (Sandbox Code Playgroud)
或基类构造函数参数:
abstract class Table
{
public string Title { get; private set; }
public Table(string title)
{
Title = title;
}
}
class InfoTable : Table
{
public InfoTable() : base("Info") { }
}
Run Code Online (Sandbox Code Playgroud)
按照他们的说法,你的类只是数据类,这不是一个好的 OOP 实践。无论如何,我更喜欢第一种类型,因为如果在这种情况下,在子类中,您可以拥有非编码标题,如本示例所示
class InfoTable : Table
{
private string id;
private string name;
public override string Title
{
get { return name+id; }
}
}
Run Code Online (Sandbox Code Playgroud)
但仍然可能取决于两者中哪一个更好
好吧,假设这个类不像这个例子那样静态
private DynamicTitleProvider provider;
public override string Title
{
get { return provider.GetTitle(); }
}
Run Code Online (Sandbox Code Playgroud)