C#XML如何序列化对象的子集和属性的子集是从配置文件驱动的



源代码属性不想被触及,因为我们有多个序列化案例,所以我想做出不影响周围其他进程的序列化决策。

有一个配置白名单的决定是,对序列化中包含的内容的更新可以是一个简单的配置更改,而不是代码加载。

到目前为止,我想到的是在配置中读取父对象名称和属性名称的列表,并将这些小狗放入哈希表中。使用GetProperties()循环遍历我的复杂对象的所有属性,并检查我当前查看的名称组合是否与哈希中存在的组合匹配。如果它是不匹配的,那么通过XmlAttribteOverrides通过它的xmlIgnore属性。

是否有更有效的方法来强制执行序列化白名单?

XmlAttributeOverrides是您需要非常小心的东西——每次使用new XmlSerializer时,它都会生成一个程序集,因此您必须缓存和重用这些东西。坦率地说,使用条件序列化可能更好;即

public int Foo {get;set;}

你可以添加一个方法,比如:

public bool ShouldSerializeFoo() {...}

它需要返回CCD_ 5/CCD_。

最新更新