我对XML模式文件(.XSD
)使用了 XSD.exe 来生成C#类,用于反序列化符合所述XML模式的XML数据文件。
我注意到所有生成的类都添加了以下类级属性。
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
在某些情况下,该工具还生成了XmlElementAttribute
属性,我很清楚这是正确反序列化所必需的。
[System.Xml.Serialization.XmlElementAttribute("Field")]
除此XmlElementAttribute
之外,反序列化确实需要哪些上述属性才能成功。我知道我可以逐个删除它们并尝试一下,但是有很多类,我希望尽可能保持我的类定义“干净”,而不需要在整个地方都有不必要的属性。
这是 XSD.exe 生成的示例类定义,以防您需要查看该类。
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class CrystalReportReportFooter {
private CrystalReportReportFooterSection sectionField;
/// <remarks/>
public CrystalReportReportFooterSection Section {
get {
return this.sectionField;
}
set {
this.sectionField = value;
}
}
}
谢谢,
答案 0 :(得分:1)
除非重新生成代码的工具需要这样做,否则应该可以安全删除。
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
你需要这个,因为这是告诉一个类可以序列化的。
[System.SerializableAttribute()]
这可以删除。它纯粹用于调试,如果添加自定义代码,可能会在以后阻碍调试。
[System.Diagnostics.DebuggerStepThroughAttribute()]
这可以删除。仅用于IDE或利用它的任何WYSIWYG设计器。
[System.ComponentModel.DesignerCategoryAttribute("code")]
这取决于你。基本上它告诉Serializer该类是匿名XSD类型。
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]