Traté de ver esto en línea, pero todos los ejemplos WSDL parece que realmente no explicar si debería marcar cosas como cadena BaseType en el WSDL o int ...WSDL, enumeraciones y C#: Es todavía turbia
Básicamente, estoy tratando de hacer mi WSDL para que pueda representar una enumeración. Tengo un C# Enum en cuenta ya que quiero hacerlo coincidir con ...
public enum MyEnum {
Item1 = 0,
Item2 = 1,
Item3 = 2,
SpecialItem = 99
}
no estoy seguro de cómo mi WSDL debe mirar ... Me imagino que es uno de los dos, pero incluso entonces no estoy 100% seguro ...
<wsdl:types>
<xsd:schema targetNamespace="http://www.mysite.com/MyApp"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xsd:simpleType name="MyEnum">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="0" />
<xsd:enumeration value="1" />
<xsd:enumeration value="2" />
<xsd:enumeration value="99" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
O
<wsdl:types>
<xsd:schema targetNamespace="http://www.mysite.com/MyApp"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xsd:simpleType name="MyEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Item1" />
<xsd:enumeration value="Item2" />
<xsd:enumeration value="Item3" />
<xsd:enumeration value="SpecialItem" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
¿Cómo sabe que yo quiero SpecialItem a ser 99? ¿O no le importa cómo se implementa realmente? Básicamente, cuando creo un mensaje de respuesta, simplemente le agrego MyEnum y lo serializa de una manera que no almacena el valor int base de la enumeración, sino el nombre de la cadena para que el otro extremo pueda recibirlo por su nombre. del valor base? ¿Tiene sentido? –
El serializador en realidad no le importa. Solo asegúrese de establecer los valores en el tipo MyEnum, no en un entero. Además, siempre debe asegurarse de que las definiciones del lado del servidor y del lado del cliente para la enumeración MyEnum sean idénticas, de lo contrario obtendrá resultados no deseados. – code4life
Básicamente serializa el nombre (es decir, "SpecialItem") y no le importa qué SpecialItem está asignado ... pero, para mi propia claridad, ¿debería asignarles ambos 99 en Cliente y Servidor? ¿Se estropearía si lo asignara 100 en el Cliente y 99 en el servidor suponiendo que no tengo en cuenta eso en su propia programación por separado? –