.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 属性是可选的?