Tre*_*Dev 6 c# xml xml-serialization ixmlserializable
我正在尝试以特定格式生成xml文档.我想跳过根据属性的值序列化属性.
public class Parent
{
public Parent()
{
myChild = new Child();
myChild2 = new Child() { Value = "Value" };
}
public Child myChild { get; set; }
public Child myChild2 { get; set; }
}
public class Child
{
private bool _set;
public bool Set { get { return _set; } }
private string _value = "default";
[System.Xml.Serialization.XmlText()]
public string Value
{
get { return _value; }
set { _value = value; _set = true; }
}
}
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(Parent));
x.Serialize(Console.Out, new Parent());
Run Code Online (Sandbox Code Playgroud)
如果Set为false,我希望整个属性不被序列化,我得到的xml应该是
<Parent>
<myChild2>default</myChild2>
</Parent>
Run Code Online (Sandbox Code Playgroud)
代替
<Parent>
<myChild/>
<myChild2>default</myChild2>
</Parent>
Run Code Online (Sandbox Code Playgroud)
有什么方法可以用IXmlSerializable或其他任何东西干净利落地做到这一点?
谢谢!
有一个ShouldSerialize*模式(由TypeDescriptor引入,但由其他一些代码区域识别,例如XmlSerializer):
public bool ShouldSerializemyChild() {
return myChild != null && myChild.Set;
}
Run Code Online (Sandbox Code Playgroud)
那应该排序.
但是,更简单的选择是将其赋值为null.
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |