我有一个简单的模式,其中我将minOccurs和maxOccurs都声明为1。当我运行XSD.exe以生成C#类并在代码中使用该类时,该字段并不强制为必填字段。是否遗漏了一些额外的步骤?或者使用XSD.exe生成的类不需要必填字段?
任何建议或见解都将是有帮助的。
发布于 2010-05-03 22:12:14
就像visual studio中的Xml / infer schema工具一样,每当我使用XSD.exe时,我最终都会修复一些生成的代码。XSD.exe做了一个很好的近似,但它并不完全有效。
minOccurs / maxOccurs 'bug'文档记录在MSDN上。
当从XML Schema文档生成源代码时,Xsd.exe忽略应用于<
>、< sequence >、< group >、< all >和< any >元素的minOccurs属性。
对于元素,如果minOccurs属性的值大于1或无界,则Xsd.exe将忽略maxOccurs属性。在这种情况下,该工具会生成一个对应于XSD数据类型的数组。Xsd.exe使用maxOccurs属性的值来确定是生成单个实例还是生成数组。
对于元素,如果将minOccurs属性应用于转换为.NET框架引用类型的架构数据类型,则Xsd.exe也会忽略该属性。
只有当以下所有条件都为真时,Xsd.exe才会使用minOccurs属性的值:
该元素被涉及到。
maxOccurs属性指定单个实例。
数据类型转换为值类型。
发布于 2010-05-03 22:46:04
你将如何在代码中强制执行一个任意的最小值?某种断言?我猜你只能映射到“非空单实例”(1:1)非空数组(1:许多)和它们的可空等价物(0;1)和(0:许多)
发布于 2010-05-03 22:02:16
您说得对,XSD.EXE不强制执行事件要求。这是设计好的。
https://stackoverflow.com/questions/2758549
复制相似问题