2011-06-14 2 views
6

웹 서비스에서 svcutil을 사용하여 datacontract를 생성 중입니다. svcutil 및 지정된 필드

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

가 어떻게 필드는 모두 null 허용하고 지정된 필드를 가질 수 있습니다

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

필드는이 같은 모양을 생성?

+0

속성 자체가 'DateTime'또는 'DateTime?'으로 표시됩니까? –

+0

System.Nullable로 표시됩니다. adrianm

답변

6

소스 Wsdl에 따라 다릅니다.

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

svcutil.exe 사용 nillableNullable<> 필드를 생산하고 minOccurs을 필드 + 지정된 조합을 생산하기 위해 : 나는 (구문의 확실하지 않은)이 거기에 뭔가 내기.

WSDL이 .Net 생성 WSDL이 아닙니다.

+0

정확하게 보이는 모양입니다. 지금은 이해. 감사. 당신은 틀렸어. 닷넷. wsdl의 일부 다른 기능은 .Net 서비스라는 것을 보여줍니다. – adrianm

1

클래스 생성은 웹 서비스의 XSD 스키마에 의해 결정됩니다.

null 입력 가능 필드를 생성하려면. 필드는 nillable으로 표시되어야합니다.

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

XML은 다음과 같습니다.

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

내가 스키마에서이 필드는 다음과 같습니다 믿고 :

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

가 완전히 요소를 생략 할 createdFieldSpecified = false 경우 :

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

결론 : 웹 서비스 스키마 svcutil으로 null 입력 가능 필드를 생성하려면 업데이트해야합니다.