如何为我继承的类声明构造函数?

时间:2011-11-20 06:52:44

标签: c#

我有以下课程:

public abstract class TableServiceEntity
{
    protected TableServiceEntity();
    protected TableServiceEntity(string partitionKey, string rowKey);
    .....
    .....
}

我从这个类继承如下:

public class AuditableTableServiceEntity : TableServiceEntity  
{
    public string CreatedBy { get; set; }
    .....
    .....
}

我按如下方式使用该课程:

public class Note : AuditableTableServiceEntity
{

    public Note() { }
    public Note(string dsValue, string pk)
        : base(pk, Seq.GetNext(dsValue, pk, "Note").ToString("00000")) { }

它没有说AudrietTableServiceEntity类没有构造函数 有两个论点。要修复我试图将以下方法添加到AuditableTableServiceEntity。这是有效的事情还是有其他方式?另外我注意到它需要我添加一个带零参数的构造函数。这是为什么?

    public AuditableTableServiceEntity()
        : base()
    {
    }

    public AuditableTableServiceEntity(string pk, string rk)
        : base(pk, rk) 
    { 
    }

有人可以就我是否走上正轨或是否有更好的方法向我提出建议。我应该将AuditableTableServiceEntity上的方法声明为受保护,还应该将该类声明为抽象?

1 个答案:

答案 0 :(得分:2)

  

有人可以就我是否走上正轨或是否有更好的方法向我提出建议。

这是正确的方法。

  

我是否应该将AuditableTableServiceEntity上的方法声明为受保护,还应该将该类声明为抽象吗?

这取决于。用户是否应该能够直接构建AuditableTableServiceEntity的实例?如果是这样,那么构造函数应该是公共的,并且类不应该是抽象的。

但是,如果它没有意义,并且用户应该总是构造一个Note或其他类似的类,那么受保护的构造函数和抽象类是合适的。