我觉得可以使用两个变量, 一个用于序列化,string类型另一个用于读写,例如[code=csharp] class Test { [XmlIgnore] public int A{get;set;} [XmlElement("A")] public string AString { set { try{ A = int.Parse(value); } catch{ A = 0;} // default value } get { return A.ToString(); } } } [/code]代码手写,可能有些许错误。
一个用于序列化,string类型另一个用于读写,例如[code=csharp]
class Test
{
[XmlIgnore]
public int A{get;set;}
[XmlElement("A")]
public string AString
{
set
{
try{ A = int.Parse(value); }
catch{ A = 0;} // default value
}
get
{
return A.ToString();
}
}
}
[/code]代码手写,可能有些许错误。
我比较希望的是有类似 [XmlIgnore]的这种声明,可以声明如果这个xml转这个变量失败,就不要转。
或者XmlSerializer本身提供针对这种类型转换处理的方法重写,我只要重写掉这个方法就行。
这种比较简单而且清晰的方法。先为xml对应一个string,然后再定义一个int通过get set来这个写起来太长了,有多少元素就要写多少个,写出来实在不太好看。