C# 如何基于自定义属性有条件地将属性序列化为xml?

C# 如何基于自定义属性有条件地将属性序列化为xml?,c#,xml,C#,Xml,我有一个复杂的对象图,需要序列化为Xml。在每个属性上,我都添加了一个自定义属性: public class ExportLevelAttribute : Attribute { public ExportLevel[] Values { get; set; } public ExportLevelAttribute (params ExportLevel[] values) { this.Values = values; } } 以及在每个物

我有一个复杂的对象图,需要序列化为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中的属性


我看了看,想知道这是否有效。是否可以在方法中访问属性的属性?或者有没有更好的方法可以有条件地序列化属性?

只有公共属性被序列化,因此您可以将不希望在xml中使用的属性设置为私有。@jdweng所有属性都必须是公共的,因为根据属性的不同,一些属性将不会根据该条件导出。在其他情况下,可能会导出这些相同的属性。
XmlSerializer
已经有两种支持条件序列化的机制,请参阅。这两种都能满足你的需要吗?