2012-01-31 2 views
4

WCF 서비스에 XmlSerializer를 사용하고 있습니다 (서비스에 대한 이유가 있습니다). 그러나 최근에 나는 문제가 발생했습니다 :이 대신XmlSerializer - 필수 요소

<xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:string"/> 

:

<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string"/> 
내가 즉, 참조 유형 속성이 필요하기는 XSD의이 같은 모습에 정의의 만들 수있는 간단한 방법을 찾을 수 없습니다 내가 DataContractSerializer와 나는이 작업을 수행 할 수 있다는 것을 알고

[XmlElement] 
public string Name { get; set; } 

:

여기에 속성에 대한 코드입니다

[DataMember(IsRequired = true)] 
public string Name { get; set; } 

그리고 원하는 스키마를 얻을 수 있습니다.

XmlSerializer 특성을 사용하여 IsRequired와 유사한 기능을 얻는 방법에 대한 아이디어가 있습니까?

감사합니다. 구성원을 강제해야한다

[XmlElement(IsNullable=true)] 

를 사용

답변

0

(-이 옵션을 선택하지 않은 나는 생각한다)은 1의는 minOccurs을 만드는 경우에도 널 (null)을 연재합니다.

+0

네가 맞아, 실제로 xsd에서 minOccurs를 1로 설정하지만 xilli = "true"속성도 xs : element에 추가한다. 내가 원하는 것은이 요소가없는 클라이언트의 메시지가 서비스에 의해 받아 들여지지 않도록 보장하여 null에 해당하는 속성을 확인할 필요가 없다는 것입니다. –

+0

나는 여분의 속성없이 요소를 강제로 기본 XML 직렬기를 얻을 수 있다고 생각하지 않는다. 생성 된 XML을 완전히 사용자 정의 할 수 있도록 IXmlSerializable을 구현하는 옵션이 있습니까? –

관련 문제