我们假设我有像这样的xml:
<Server Active="No">
<Url>http://some.url</Url>
</Server>
C#类看起来像这样:
public class Server
{
[XmlAttribute()]
public string Active { get; set; }
public string Url { get; set; }
}
是否可以将Active属性更改为bool
类型并让XmlSerializer强制“是”“否”来布尔值?
编辑:收到Xml,我无法更改。所以,事实上,我只对反序列化感兴趣。
答案 0 :(得分:3)
我可能会看第二个属性:
[XmlIgnore]
public bool Active { get; set; }
[XmlAttribute("Active"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public string ActiveString {
get { return Active ? "Yes" : "No"; }
set {
switch(value) {
case "Yes": Active = true; break;
case "No": Active = false; break;
default: throw new ArgumentOutOfRangeException();
}
}
}
答案 1 :(得分:2)
是的,您可以实现IXmlSerializable,您将可以控制xml的序列化和反序列化方式
答案 2 :(得分:0)
public class Server
{
[XmlAttribute()]
public bool Active { get; set; }
public string Url { get; set; }
}
上一课应以该序列化形式结束:
<Server Active="false">
<Url>http://some.url</Url>
</Server>