Contextual XmlSerialization

本文关键字:XmlSerialization Contextual | 更新日期: 2023-09-27 18:12:24

是否有办法控制xml序列化,例如检查根/父对象的属性。

:

class ClassA
{
    public int SomeAIntProp {get; set; }
    ClassB OtherClass;
}
class ClassB
{
    public int SomeBIntProp {get; set; }
}

这就是我想要的:

public bool ShouldSerializeSomeBIntProp(context) 
{ 
    return (context is ClassA) && ((ClassA)context).SomeAIntProp >10; 
} 

}

Contextual XmlSerialization

在任何标准/内置序列化器中都没有。所有的逻辑都必须相对于被序列化的实例(当然你可以遍历任何已经存在的导航属性——.Parent等——尽管需要标记为[XmlIgnore])。唯一的其他选择是实现IXmlSerializable并手动完成,但我强烈建议不要这样做。

不要在Serialization中这样做,而只需在类中添加一个函数,该函数首先验证要保存的内容,然后调用具体的序列化函数。

如果你有超过一个对象必须结合和保存在单独的文件中,所以也有一些交叉验证对不同类型的参与序列化的对象,你可以或实现 SerializationAdapter (定制类的结合,验证和序列化对象的利益),或者使用责任链,如果可能的话在你的案例中,有一组函数抛出你的对象必须通过验证,还有一些最终函数,用来验证所有对象上所有函数的最终结果。或多或少像如果你的对象是病人,验证函数是医生,最后你得到一个收据,它基于每一个分析,报告你的最终结果。

相关文章:
  • 没有找到相关文章