【发布时间】:2011-03-19 02:30:03
【问题描述】:
我正在决定使用我正在构建的类库的方向。
我有一批行业标准的 XSD,我从中生成 .net 对象。我已经使用了所有 XSD.exe、LinqtoXsd、xsd2code 甚至 OxmLibrary,但结果各不相同。但最后,我能够生成体面的 .net 类,这些类可以序列化/反序列化为标准。
但是 - 使用此 xml 调用的 api(api 也是标准的一部分)要求查询也被构造为 XML,但与基本 XSD 有一些差异,特别是:
- 标签的存在或缺失表明应该“选择”特定字段或以其他方式使用(更新、删除、添加等)。
-xsd 中的单值类型,可以在“选择”api 查询中重复,以指示该字段的 where 子句的等价物。
我可能会使用上述代码生成框架之一为查询类型对象构建辅助代码,以补充主要数据对象。
所以我正在考虑指定和序列化查询对象的方法包括:
使用“手动”序列化方法,这些方法可以查看单独的查询对象并确定要包含/排除哪些字段,如果查询指定多个值,还可以创建重复标签。
将每个字段更改为从可感知查询的基本类型继承,并且可以为每个元素输出正确的 xml。
使用扩展方法,以便该类的每个字段都有额外的方法,可以调用这些方法来指定查询参数,并且可以重用数据对象来创建查询。
使用匿名类型指定字段的子集,并由此查询xml
除此之外,我还需要弄清楚如何破解前面提到的 code gen fremeworks 来解决我前进的任何方向。
我还没有完全考虑所有这些,但我想我会把它放在那里,以防有人做过类似的工作并提出一些建议。
【问题讨论】:
标签: .net xml-serialization code-generation xsd