如何使用子类正确覆盖属性?

时间:2019-03-05 17:08:26

标签: c# class inheritance

如何正确强制孩子使用子版本覆盖属性? 在此示例中,我在SaveObjectData data中有SaveObject。我希望SaveObject的孩子用SaveObjectData的每个孩子覆盖它。 这将使我能够列出SaveObject并从所有列表中访问data,并且可以将其转换为更具体的data形式 但是,如果我引用的是SaveModelData,我希望能够只获取它的data而不必再次投射它。有办法吗?

public abstract class SaveObject
{
    public string objectName;
    public abstract SaveObjectData data { get; set; }
}

public class SaveModel : SaveObject
{
    SaveModelData _data;
    public override SaveObjectData data { get { return _data; } set { _data = value as SaveModelData; } }
}

public class SaveRoom : SaveObject
{
    SaveRoomData _data;
    public override SaveObjectData data { get { return _data; } set { _data = value as SaveRoomData; } }
}

public abstract class SaveObjectData
{
    public string version;
}

public class SaveModelData : SaveObjectData
{
    public byte[] modelBytes;
}

public class SaveRoomData : SaveObjectData
{
    public PlayObjectSerializable[] playObjects;
}

0 个答案:

没有答案