.Net SvcUtil:属性必须是可选的

Posted

技术标签:

【中文标题】.Net SvcUtil:属性必须是可选的【英文标题】:.Net SvcUtil: attributes must be optional 【发布时间】:2011-02-25 21:21:44 【问题描述】:

我正在尝试使用 SvcUtil.exe 而不是 Xsd.exe 生成 C# 代码类。后者给我带来了一些问题。

命令行:

SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer

这里描述并解决了几个 SvcUtil 问题: http://blog.shutupandcode.net/?p=761

我无法解决的一个问题是:错误:无法导入命名空间''中的类型'DatafieldDescription'。属性必须是可选的并且来自命名空间'http://schemas.microsoft.com/2003/10/Seri 化/'。要么更改架构,以便类型可以映射到数据协定类型,要么使用 ImportXmlType 或使用不同的序列化程序。 '

我变了

<xs:attribute name="Order" use="required">

<xs:attribute name="Order" use="optional">

<xs:attribute name="Order">

但错误仍然存​​在。是否可以使用属性,或者我必须将它们全部删除(在这种情况下,本次执行结束)?

【问题讨论】:

【参考方案1】:

可以在此处找到答案和可能的解决方案: MSDN: Importing Schema to Generate Classes

具体: XsdDataContractImporter 支持有限的模式子集。如果存在不支持的架构结构例如 XML 属性),则导入尝试会失败并出现异常。但是,将 ImportXmlType 属性设置为 true 会扩展支持的架构范围。当设置为 true 时,XsdDataContractImporter 生成实现 IXmlSerializable 接口的类型。这样就可以直接访问这些类型的 XML 表示。

如:

SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer /importXmlTypes

不幸的是,这将导致这种代码:

private System.Xml.XmlNode[] nodesField;

问候, 米歇尔

【讨论】:

+1:帮助我找出了我在使用 XMLSchemaSet.Compile() 时遇到的问题 ...

以上是关于.Net SvcUtil:属性必须是可选的的主要内容,如果未能解决你的问题,请参考以下文章

scss 增加给定元素的可定位区域而不影响布局。需要垂直增加;水平是可选的。

为啥 UITableViewCell textLabel 属性是可选的?

CoreData:Not null 属性应该是可选的吗?

关于swift中的可选类型

TypeScript 错误“'delete' 运算符的操作数必须是可选的”背后的逻辑是啥?

插件 jsonschema2pojo:属性按要求显示,但它们应该是可选的