|
7
|
| Dean Johnston · 技术社区 · 17 年前 |
|
|
1
3
从我的头上看,我认为你不能。相反,你可以做的是手工编写WSDL文件,然后使用svcutil.exe生成代码。 如果您只想按不同于字母顺序的顺序排列元素,则可以使用[datamember]属性([datamember(order=1)]、[datamember(order=2)]等上的order(从1开始,而不是从0开始)参数对datacontract中的元素进行排序。 |
|
|
2
2
可以切换WCF以使用XmlSerializer而不是DataContractSerializer。XmlSerializer支持xs:all。见 http://msdn.microsoft.com/en-us/library/ms733901.aspx |
|
|
3
0
即使您可以强制WCF这样做,反序列化程序也无法正确工作以支持输入。示例和解释如下。 输入1(好):
输入2(坏):
因此,如果输入1被正确反序列化,那么输入2将不会——bField将具有设置的值,但属性afField将为空。 如果wcf不能处理这种无序输入,我强烈认为它应该抛出一个异常,但是基于我的测试(在IIS中为.NET 3.5),它不这样做,它只是跳过一些元素值。 此外,wcf还忽略完全虚假的输入,只要它不影响它正在寻找的有效元素值。所以这个输入
不会引发任何错误,实际上会反序列化afield和bfield中的值。 |