默认对象实现

本文关键字:实现 对象 默认 | 更新日期: 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类只能设置由StudentRecordDriverRecord继承的属性。如果您想将特定于类的属性设置为默认值,则必须重写方法(我将创建一个方法)并执行以下操作(对于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.

我认为空对象模式是你需要的。