2012-01-31 50 views
4

我使用XmlSerializer進行WCF服務(在我的服務的情況下有這個原因)。但最近我碰到的問題:我無法找到一個簡單的方法,使所需的參考類型屬性,即使是在XSD看起來像這樣的定義:XmlSerializer - 所需的元素

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

的這個代替:

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

下面是屬性的代碼:

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

我知道,與DataContractSerializer的我能做到這一點:

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

我將得到所需的模式。

任何想法如何使用XmlSerializer屬性獲得類似於IsRequired's的功能?

謝謝。

回答

0

使用

[XmlElement(IsNullable=true)] 

應該強制成員被序列化甚至當空,使之有一個1的minOccurs(我認爲 - 沒有檢查)。

+0

你是對的,它確實在xsd中將minOccurs設置爲1,但它也將nillable =「true」屬性添加到xs:element。我想要的是保證沒有這個元素的客戶端消息不會被服務接受,所以我不必檢查相應的屬性爲null。 – 2012-02-01 07:11:19

+0

我不認爲你可以得到默認的xml序列化程序來強制元素,沒有額外的屬性。它會是一個選項來實現IXmlSerializable,所以你可以完全自定義生成的XML? – 2012-02-01 10:54:53

相關問題