我正在尝试使用 xsd 或 xsd2code 从 XSD 文件生成 C# 类。 XSD 文件来自第三方,无法修改。
它确实生成类,但它们包含这样的块。
[XmlElement("ABOUT_VERSIONS", typeof(ABOUT_VERSIONS), Order=0)]
[XmlElement("ASSETS", typeof(ASSETS), Order=0)]
[XmlElement("COLLATERALS", typeof(COLLATERALS), Order=0)]
[XmlElement("COMMUNICATION_EVENTS", typeof(COMMUNICATION_EVENTS), Order=0)]
[XmlElement("DEAL_DETAIL", typeof(DEAL_DETAIL), Order=0)]
[XmlElement("EXPENSES", typeof(EXPENSES), Order=0)]
[XmlElement("EXTENSION", typeof(DEAL_EXTENSION), Order=0)]
[XmlElement("LIABILITIES", typeof(LIABILITIES), Order=0)]
[XmlElement("LITIGATIONS", typeof(LITIGATIONS), Order=0)]
[XmlElement("LOANS", typeof(LOANS), Order=0)]
[XmlElement("PARTIES", typeof(PARTIES), Order=0)]
[XmlElement("REFERENCE", typeof(REFERENCE), Order=0)]
[XmlElement("RELATIONSHIPS", typeof(RELATIONSHIPS), Order=0)]
[XmlElement("SERVICES", typeof(SERVICES), Order=0)]
[XmlElement("SUPPORTING_RECORD_SETS", typeof(SUPPORTING_RECORD_SETS), Order=0)]
public List<object> Items { get; set; }
在过去的更简单的类中,我只是手动编辑了输出以使这些类有用,并将其替换为类似的内容
[XmlElement("ABOUT_VERSIONS", typeof(ABOUT_VERSIONS), Order=0)])]
public List<ABOUT_VERSIONS> ABOUT_VERSIONS { get; set; }
[XmlElement("ASSETS", typeof(ASSETS), Order=0)])]
public List<ASSETS> ASSETS { get; set; }
...
这个输出非常大(输出类文件接近 9MB),并且输出充满了类似的块。需要花费数天的时间来检查并手动编辑自动生成的类,只有在下次发布更新时才需要再次执行此操作(如果您好奇的话,这是 MISMO 消息标准。它是由一群非技术银行高管。这可能比你想象的更糟糕。)。
那么有没有办法强制 xsd 或 xsd2code 或其他工具自动生成 c# 类,将每个可能的子类分隔到自己的列表中,而不是将它们聚集到一个对象列表中?
顺便说一下,我不建议手动编辑生成的代码。它使代码难以维护: