上下文Xml序列化

时间:2011-10-23 20:40:22

标签: c# xml-serialization

有没有办法控制ex的xml序列化。检查root / parent对象中的属性。

我有:

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; 
} 

}

2 个答案:

答案 0 :(得分:1)

不在任何标准/内置序列化器中,没有。所有逻辑都必须与被序列化的实例相关(当然,您可以遍历已存在的任何导航属性 - .Parent等 - 尽管需要将其标记为[XmlIgnore])。唯一的另一个选择是实现IXmlSerializable并手动完成所有操作,但我强烈反对。

答案 1 :(得分:0)

不要在Serialization中执行此操作,而只需向您的类添加一个函数,该函数首先验证要保存的内容,然后调用具体的序列化函数。

如果您有多个对象必须组合并保存在单个文件中,那么对于参与序列化的不同类型对象的一些交叉验证,您可以或实现 SerializationAdapter (即你的自定义类必须组合,验证和序列化感兴趣的对象),或者使用Chain of Responsibility,如果你的情况可能,你有一组函数抛出你的对象必须通过和验证,以及一些最终函数,用于验证所需对象的所有函数的最终结果。或多或少,如果你的对象是耐心的,验证功能是医生,最后你得到一张收据,根据每一次分析,报告最终结果。

希望这有帮助。