有没有办法控制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;
}
}
答案 0 :(得分:1)
不在任何标准/内置序列化器中,没有。所有逻辑都必须与被序列化的实例相关(当然,您可以遍历已存在的任何导航属性 - .Parent
等 - 尽管需要将其标记为[XmlIgnore]
)。唯一的另一个选择是实现IXmlSerializable
并手动完成所有操作,但我强烈反对。
答案 1 :(得分:0)
不要在Serialization
中执行此操作,而只需向您的类添加一个函数,该函数首先验证要保存的内容,然后调用具体的序列化函数。
如果您有多个对象必须组合并保存在单个文件中,那么对于参与序列化的不同类型对象的一些交叉验证,您可以或实现 SerializationAdapter (即你的自定义类必须组合,验证和序列化感兴趣的对象),或者使用Chain of Responsibility,如果你的情况可能,你有一组函数抛出你的对象必须通过和验证,以及一些最终函数,用于验证所需对象的所有函数的最终结果。或多或少,如果你的对象是耐心的,验证功能是医生,最后你得到一张收据,根据每一次分析,报告最终结果。
希望这有帮助。