我有序列化的对象,并希望添加“版本”属性。
我想要的是:
反序列化的对象,不在其xml中具有version属性,应标记为“版本1”。
反序列化的对象,做在其xml中具有version属性,应该使用xml中的任何版本。
示例(伪代码):
const string LatestVersion = "2";
class Foo {
public String version {get; set; }
}
var foo = new Foo();
foo.version == "2"
serialize(foo) -> "<foo><version>2</version></foo>";
foo = deserialize("<foo></foo>")
foo.version == "1";
foo = deserialize("<foo><version>2</version>");
foo.version == "2";
foo = deserialize("<foo><version>3</version>");
foo.version == "3";
答案 0 :(得分:0)
添加:
[XmlIgnore]
public bool versionSpecified {get;set;}
当它有值时,你应该发现它被设置为true(由XmlSerializer本身)。但请注意:在序列化期间还需要报告为true,否则不包括该值。
也许更简单的方法:
private string _version;
public string version {
get { return _version ?? "1"; } // the default value
set { _version = value; }
}
然后检查该字段是否为空。