Tengo el siguiente tipo de WSDL (que es generada por la herramienta de terceros):WCF: Colección tipo de proxy en el cliente
<xsd:complexType name="IntArray">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Elements" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
veces Visual Studio genera:
public class IntArray : System.Collections.Generic.List<int> {}
Y a veces doesn No genera ningún tipo de proxy para este wsdl y solo usa int [].
El tipo de colección en la configuración del servicio web es System.Array.
¿Cuál podría ser el motivo de tal comportamiento predecible?
Editado:
he encontrado la manera cómo puedo reproducir este comportamiento.
Para examle tenemos dos tipos:
<xsd:complexType name="IntArray">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Elements" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="StringArray">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Elements" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
VS genera:
public class IntArray : System.Collections.Generic.List<int> {}
public class StringArray : System.Collections.Generic.List<string> {}
Ahora cambiar el tipo de StringArray:
<xsd:complexType name="StringArray">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Elements" type="xsd:string" />
<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax" />
</xsd:sequence>
<xsd:anyAttribute namespace="##any" processContents="lax"/>
</xsd:complexType>
VS genera tipo de proxy por sólo StringArray. Pero no para IntArray.
Editado:
Reference.svcmap:
<ClientOptions>
<GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
<EnableDataBinding>true</EnableDataBinding>
<ExcludedTypes />
<ImportXmlTypes>false</ImportXmlTypes>
<GenerateInternalTypes>false</GenerateInternalTypes>
<GenerateMessageContracts>false</GenerateMessageContracts>
<NamespaceMappings />
<CollectionMappings />
<GenerateSerializableTypes>true</GenerateSerializableTypes>
<Serializer>Auto</Serializer>
<ReferenceAllAssemblies>true</ReferenceAllAssemblies>
<ReferencedAssemblies />
<ReferencedDataContractTypes />
<ServiceContractMappings />
</ClientOptions>
¿Puede dar algunos detalles más sobre la forma en que está generando el proxy del lado del cliente? – slugster
Estoy usando VS 2008 "Agregar referencia de servicio": Nivel de acceso para clases generadas: público; Operaciones asincrónicas: no verificado; Generar siempre contratos de mensajes: no marcado; Tipo de colección: System.Array; Tipo de colección de diccionario: System.Collections.Generic.Dictionary; Tipos de reutilización en todos los ensamblados a los que se hace referencia: marcado. –