如何正确强制孩子使用子版本覆盖属性?
在此示例中,我在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;
}