今天是个好日子,
我是一名独立游戏开发者,过去主要与 XNA 合作,而在另一个极端,我主要与商业工具集合作。然而,XNA 的范围非常有限,我正在构建一个跨平台抽象层来针对多个平台。
长话短说,我需要比 [Serializable] 更广泛地访问的 xml 序列化,并且有人指出我需要数据契约。我一直在做很多研究,但找不到任何关于系统基础知识的好信息,与继承和覆盖有关。
我的问题的关键是...
[DataContract]
public class Node
{
private string name;
public string Name { get { return name; } set { name = value; } }
public virtual float Rotation { get { return 0f; } set { } }
}
[DataContract]
public class FancyNode : Node
{
private float rotation;
public override float Rotation { get { return rotation; } set { rotation = value; } }
}
如果我序列化一个'FancyNode','Rotation'会被正确序列化,'Name'会被序列化吗?
追问: 本来想早点问的,当时想不起来。序列化程序处理程序如何覆盖 [IgnoreDataMember] 属性?例如...
[DataContract]
public class Simple
{
[IgnoreDataMember]
public virtual string Value { get { return ""; } set { } }
}
[DataContract]
public class Complex : Simple
{
private string value;
public override string Value { get { return value; } set { this.value = value; } }
}
“复杂”中的“价值”会被序列化吗?一些答案表明,如果不使用 [DataMember] 标记,则所有属性都将被序列化。如果是这样,基类的 [IgnoreDataMember] 属性是否有任何影响?