Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XSD、限制和代码生成_C#_Xml_Code Generation_Xsd - Fatal编程技术网

C# XSD、限制和代码生成

C# XSD、限制和代码生成,c#,xml,code-generation,xsd,C#,Xml,Code Generation,Xsd,我正在为一个现有项目进行一些代码生成,我想从xsd开始。因此,我可以使用Xsd2Code/xsd.exe等工具来生成代码,还可以使用xsd来验证xml。那部分工作没有任何问题 我还想将一些限制转换为DataAnnotation(丰富Xsd2Code)。 例如,xs:minInclusive/xs:maxInclusive我可以转换为RangeAttribute 但是如何处理我们创建的自定义验证属性呢?我可以添加自定义面/限制吗?怎么做?或者是否有其他解决方案/最佳实践 我希望将所有内容都收集到一

我正在为一个现有项目进行一些代码生成,我想从xsd开始。因此,我可以使用Xsd2Code/xsd.exe等工具来生成代码,还可以使用xsd来验证xml。那部分工作没有任何问题

我还想将一些限制转换为DataAnnotation(丰富Xsd2Code)。 例如,xs:minInclusive/xs:maxInclusive我可以转换为RangeAttribute

但是如何处理我们创建的自定义验证属性呢?我可以添加自定义面/限制吗?怎么做?或者是否有其他解决方案/最佳实践

我希望将所有内容都收集到一个(xsd)文件中,以便其中一个文件包含类(模型)的结构,包括必须添加的验证(属性)

<xs:element name="CertainValue">
  <xs:simpleType>
    <xs:restriction base="xs:double">
      <xs:minInclusive value="1" />
      <xs:maxInclusive value="100" />
      <xs_custom:customRule attribute="value" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

XML模式本身受模式约束,因此不能添加任意(在它看来)元素。有一个工具可以添加任何您喜欢的内容,xs:annotation/xs:appinfo,可以添加到大多数节点。或许可以尝试以下方式:

<xs:element name="CertainValue">
<xs:simpleType>
  <xs:restriction base="xs:double">
    <xs:annotation>
      <xs:appinfo>
        <xs_custom:customRule attribute="value" />       
      </xs:appinfo>
    </xs:annotation>
    <xs:minInclusive value="1" />
    <xs:maxInclusive value="100" />
  </xs:restriction>
</xs:simpleType>

这取决于Xsd2Code在何处查找内容,但如果他们希望传递XSD进行验证,appinfo可能是他们唯一的选择。究竟要在其中添加appinfo元素也是一个问题