当我使用 DataContact/DataMember 属性公开 WCF 服务时,我在其他项目中对该服务所做的每个服务引用都会生成具有 DataContract/DataMember 属性的类(以及 IExtensibleDataObject 接口实现等)。
在另一个项目中,我必须使用一个 SOAP 服务,其 WSDL 不是由 WCF 生成的,而是由其他一些我不知道且无法更改行为的工具生成的。
我的问题是我的 svcutil 代理生成的代码不太灵活:
- 这些类使用 Serializable 属性而不是 DataContract(GeneratedCode 属性指定使用 System.Xml 而不是 System.Runtime.Serialization)
- IExtensibleDataObject 未实现
- 不使用 OptionalField 属性
- XmlElement 的顺序是固定的,当新的 xs:element 插入到 wsdl xs:sequence 的中间时,会导致反序列化失败...
我使用的 svcutil 工具/wsdl 中发生了什么,它必须以这种方式生成代码?