基本上:
[DataContract(Namespace = "http://www.abc.com/foo" Name = "Get{0}Request")]
public class GetGenericRequest<T> { ... }
我的WSDL有这个版本:
<xs:complexType name="GetFooRequest">
<xs:annotation>
<xs:appinfo>
<GenericType xmlns="http://schemas.microsoft.com/2003/10/Serialization/" Name="Get{0}Request" Namespace="http://www.abc.com/foo">
<GenericParameter Name="Foo" Namespace="http://www.abc.com/foo"/>
</GenericType>
</xs:appinfo>
</xs:annotation>
<xs:sequence>
<xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="Ids" nillable="true" type="q2:ArrayOfint"/>
</xs:sequence>
</xs:complexType>
<xs:element name="GetFooRequest" nillable="true" type="tns:GetFooRequest"/>
所以,看看它似乎并不是可以互操作的。它有额外的“appinfo”东西可能会为Java或PHP带来麻烦吗?或者他们会忽略那个?
另外,更奇怪的是,无论我使用int[]
还是ICollection<int>
等,它仍然会生成类型ArrayOfint
(我知道它会更改所有底层集合理解为数组。但是,这个命名是否可以互操作?)
答案 0 :(得分:1)
它是可互操作的 - 对于客户来说,就像你有一个名为GetFooRequest
的非泛型类一样。至于集合,只要元素<xs:sequence> of <xs:int>
的模式是“标准”,名称就不会(或不应该)重要。