2011-06-14 21 views
6

Estoy generando un contrato de datos con svcutil desde un servicio web.svcutil y campos especificados

svcutil /language:cs /noConfig /targetclientversion:Version35 
     /out:Generated\ProductService.cs http://example.com/ProductService.svc?wsdl 

los campos generados se ve así:

private System.Nullable<System.DateTime> createdField; 
private bool createdFieldSpecified; 

¿Cómo puede ser tanto los campos anulable y tienen un campo específico?

+0

¿La propiedad se expone como 'DateTime' o' DateTime? '? –

+0

Está expuesto como System.Nullable adrianm

Respuesta

6

depende de la fuente Wsdl. Apuesto a que hay algo de este (no estoy seguro de la sintaxis):

<xsd:element name="created" type="xsd:datetime" minOccurs="0" xsd:nil="true" /> 

svcutil.exe uso nillable para producir un campo Nullable<>, y minOccurs para producir una combinación específica de campo +.

también apuesto a que el WSDL no es un .Net genera WSDL!

+0

Así es exactamente como se ve. Ahora entiendo. Gracias. Estás equivocado en .Net. Algunas otras cosas en el wsdl muestran que definitivamente es un servicio .Net – adrianm

1

La generación de clases se basa en el esquema XSD del servicio web.

Para generar campos que aceptan valores NULL. El campo debe marcarse como nillable.

<xs:element minOccurs="0" maxOccurs="1" name="created" type="xs:dateTime" nillable="true" /> 

El XML se verá así.

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <created xsi:nil="true" /> 
</root> 

Creo que este campo en el esquema es el siguiente:

<xs:element minOccurs="0" maxOccurs="1" name="created" /> 

y sería omitir el elemento completo si createdFieldSpecified = false:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
</root> 

El resultado final: esquema del servicio Web debe actualizarse para generar campos que aceptan nulos con svcutil.

Cuestiones relacionadas