我正在将xml发送到另一个程序,它希望布尔标志为"是"或"否",而不是"真"或"假".
我有一个类定义如下:
[XmlRoot()]
public class Foo {
public bool Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我序列化它时,我的输出如下所示:
<Foo><Bar>true</Bar></Foo>
Run Code Online (Sandbox Code Playgroud)
但我希望它是这样的:
<Foo><Bar>yes</Bar></Foo>
Run Code Online (Sandbox Code Playgroud)
我可以在序列化时这样做吗?我宁愿不必诉诸于此:
[XmlRoot()]
public class Foo {
[XmlIgnore()]
public bool Bar { get; set; }
[XmlElement("Bar")]
public string BarXml { get { return (Bar) ? "yes" : "no"; } }
}
Run Code Online (Sandbox Code Playgroud)
请注意,我还希望能够再次反序列化此数据.
我想反序列化包含可以标记nil="true"为具有类型属性的类的元素的XML消息int?.我能让它工作的唯一方法是编写我自己的NullableInt实现类型IXmlSerializable.有没有更好的方法呢?
我写了完整的问题以及我在博客上解决它的方式.