我是一名独立游戏开发者,过去主要使用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]属性是否有任何影响?