从 XSD 进行属性验证的最佳做法



我可以使用 xsd.exe 从 XSD 生成 C# 模型类,但如果将验证属性添加到模型属性,下次生成类时,我将丢失更改。

仅添加一次验证的最佳做法是什么?

如果您能够在 XML 架构 (XSD) 中表示所有验证约束,那么您将受益于所有约束

  • 在一个地方定义,
  • 根据明确定义的标准表达,以及
  • 独立于C#,Java,PhP,Python,Ruby或任何其他进行通信实现语言。

实现这些好处的最佳做法是纯使用 XML 架构(如 XSD)来表示所有验证约束。

当开发人员在 XML 架构(如 XSD 1.0)中可以表达的内容方面遇到困难时,他们通常会朝着以下几个方向之一:

  1. 使用 XSD 1.1 中提供的断言
  2. 迁移到另一个XML模式,如Schematron或RelaxNG。
  3. 用另一个验证层替换或扩充 XSD 验证基于他们选择的实现语言。 通过分离此附加验证来自自动生成的验证,两者自动和自定义验证可以和平共存。

生成类是一种在尝试使用 .net 针对 XSD 进行编码时提高工作效率的方法。如您所发现的,它不是一个双向工具。我认为您必须继续分别维护代码和 XSD - 但是您可能会考虑反转工作流程 - 从您的类生成 XSD 架构。

XSD.EXE 工具文档指出"如果指定运行时程序集文件(.exe或.dll扩展名),Xsd.exe将为该程序集中的一个或多个类型生成架构。可以使用/type 选项指定要为其生成架构的类型。(https://msdn.microsoft.com/en-US/library/x6c1kb0s(v=vs.110).aspx)

最新更新