我有一个复杂的对象图,需要将其序列化为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(),想知道它是否可行。是否可以在方法中访问属性的属性?还是有更好的条件序列化属性的方法?