我有以下课程:
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上的方法声明为受保护,还应该将该类声明为抽象?
答案 0 :(得分:2)
有人可以就我是否走上正轨或是否有更好的方法向我提出建议。
这是正确的方法。
我是否应该将AuditableTableServiceEntity上的方法声明为受保护,还应该将该类声明为抽象吗?
这取决于。用户是否应该能够直接构建AuditableTableServiceEntity
的实例?如果是这样,那么构造函数应该是公共的,并且类不应该是抽象的。
但是,如果它没有意义,并且用户应该总是构造一个Note
或其他类似的类,那么受保护的构造函数和抽象类是合适的。