我有一个简单的架构,我将minOccurs和maxOccurs都声明为1.当我运行XSD.exe生成一个C#类并在代码中使用该类时;该字段未强制执行。是否缺少一些额外的步骤?或者使用XSD.exe生成的类不是必填字段吗?
任何建议或见解都会有所帮助。
答案 0 :(得分:7)
就像Visual Studio中的Xml /推断架构工具一样,每当我使用XSD.exe时,我最终修复了一些生成的代码。 XSD.exe做了很好的近似,但它不能完全正常工作。
MSDN上记录了minOccurs / maxOccurs 'bug'。
从中生成源代码时 XML Schema文档,Xsd.exe忽略 应用于的minOccurs属性 <选择>,<序列>,< group>,<所有&gt ;, 和<任何>元件。
对于元素,Xsd.exe 如果是,则忽略minOccurs属性 maxOccurs属性的值是 大于1,或无界。在这 case,该工具生成一个数组 与XSD数据对应的类型 类型。 Xsd.exe使用的值 要确定的maxOccurs属性 是否生成单个实例 或数组。
对于元素,Xsd.exe 也忽略了minOccurs属性 如果它应用于架构数据类型 转换为.NET Framework 参考类型。
仅在满足以下所有条件时 Xsd.exe使用的是真的 minOccurs属性的值:
涉及元素。
maxOccurs属性指示a 单个实例。
数据类型转换为值 类型。
答案 1 :(得分:1)
如何在代码中强制执行任意的minoccurs?某种断言?我猜你只能映射到“非可空单个实例”(1:1)非可空数组(1:很多)及其可空等价物(0; 1)和(0:很多)
答案 2 :(得分:0)
您是正确的XSD.EXE不强制执行发生要求。这是按照设计的。