首页 > 解决方案 > 如何根据自定义属性有条件地将属性序列化为 xml?

问题描述

我有一个复杂的对象图,我需要将其序列化为 Xml。在每个属性上,我都添加了一个自定义属性:

public class ExportLevelAttribute : Attribute
{
    public ExportLevel[] Values { get; set; }

    public ExportLevelAttribute (params ExportLevel[] values)
    {
        this.Values = values;
    }
}

并在每个属性上:

[ExportLevel(Simple, Normal, Detailed)]
public bool IsTest { get; set; }

[ExportLevel(Detailed)]
public SomeObject1 Property1 { get; set; }

[ExportLevel(Normal, Detailed)]
public SomeObject2 Property2{ get; set; }

对象图是从相应的数据库表中填充的,并且在填充时没有导出级别的区别,即。表中的所有和任何数据都用于映射到对象的属性。

序列化方法负责确定哪些属性最终出现在 xml 中。

我查看了OnSerializing()并想知道它是否会起作用。是否可以在方法中访问属性的属性?或者有没有更好的方法来有条件地序列化属性?

标签: c#xml

解决方案


推荐阅读