默认对象实现
本文关键字:实现 对象 默认 | 更新日期: 2023-09-27 17:48:57
我想为继承树中的所有类实现默认对象模式。我正在做如下所示。
namespace test
{
public class Record
{
public int ID { get; set; }
}
public class StudentRecord : Record
{
public string StudentID { get; set; }
}
public class DriverRecord : Record
{
public string DLNumber { get; set; }
}
public class client
{
public static void Main()
{
StudentRecord st = StudentRecord.Default;
DriverRecord dr = DriverRecord.Default;
}
}
}
我希望默认属性或方法将所有类级属性初始化为默认值,并且我不想为每个类重复实现。我只是想写在记录(基)类。你能提供一些建议吗?
您正在寻找的正是构造函数的作用。构造函数可以调用继承的基构造函数,因此只需要在一个地方进行基初始化。有时基本功能确实可以满足您的需要:)
public class Record
{
public int ID { get; set; }
public Record()
{
// ... do general initialisation here ...
}
}
public class StudentRecord : Record
{
public string StudentID { get; set; }
public StudentRecord()
: base() // This calls the inherited Record constructor,
// so it does all the general initialisation
{
// ... do initialisations specific to StudentRecord here ...
}
}
public class client
{
public static void Main()
{
// This calls the constructor for StudentRecord, which
// in turn calls the constructor for Record.
StudentRecord st = new StudentRecord();
}
}
Record
类只能设置由StudentRecord
和DriverRecord
继承的属性。如果您想将特定于类的属性设置为默认值,则必须重写方法(我将创建一个方法)并执行以下操作(对于StudentRecord
):
public void override Initialize()
{
base.Reset();
this.StudentId = 0;
}
HTH
你没有任何"类级属性",即静态属性,在你的代码样本。你所拥有的属性(实例属性)已经初始化为它们的默认值——整数为0,引用为null,等等。
如果你想定义自己的默认值——也许ID在保存之前应该默认为-1,字符串应该默认为"——那么这正是构造函数的作用:
public class Record
{
public Record() { ID = -1; }
public int ID { get; set; }
}
public class StudentRecord : Record
{
public StudentRecord() { StudentID = ""; }
public string StudentID { get; set; }
}
// etc.
我认为空对象模式是你需要的。