抽象属性或基础构造函数参数?

时间:2013-05-30 15:39:43

标签: c# properties abstract-class

我应该选择哪种方法?为什么?有什么真正的区别吗?

抽象属性:

abstract class Table
{
    public abstract string Title { get; }
}

class InfoTable : Table
{
    public override string Title
    {
        get { return "Info"; }
    }
}

或基类构造函数参数:

abstract class Table
{
    public string Title { get; private set; }

    public Table(string title)
    {
        Title = title;
    }
}

class InfoTable : Table
{
    public InfoTable() : base("Info") { }
}

1 个答案:

答案 0 :(得分:1)

因为他们站在你的班级只是数据类,这不是一个好的OOP练习。 无论如何我更喜欢第一种类型,因为如果在子类中,你可以拥有一个非编码标题,如本例所示

class InfoTable : Table
{
    private string id;
    private string name;
    public override string Title
    {
        get { return name+id; }
    }
}

但仍然可能取决于两者中的哪一个更好

好吧,让我们说这个类不是静态的,就像这个例子那样

private DynamicTitleProvider provider;
public override string Title
    {
        get { return provider.GetTitle(); }
    }