WCF - Собирается ли использование общего в вашем дата-контракте сделать ваши WSDL не совместимыми? - PullRequest
2 голосов
/ 25 июня 2011

В основном:

[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 (что, как я понимаю, изменяет все базовые коллекции, которые он понимает, на массив. Но , это имя совместимо?)

1 Ответ

1 голос
/ 25 июня 2011

Он совместим - для клиентов это так же, как если бы у вас был неуниверсальный класс с именем GetFooRequest.Что касается коллекций, опять же, имя не имеет (или не должно) иметь значение, если схема элемента <xs:sequence> of <xs:int> является «стандартной».

...