2012-01-31 6 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; } 

と私は希望のスキーマを取得します。

IsRequiredと同様の機能をXmlSerializer属性で使用する方法はありますか?

ありがとうございました。

答えて

0

[XmlElement(IsNullable=true)] 

を使用すると、それは1のminOccurs属性を(私が考える - チェックしていない)持って作り、場合でもヌルを直列化されるメンバーを強制すべきです。

+0

本当にminOccursをxsdに1に設定していますが、nillable = "true"属性もxs:elementに追加しています。私が望むのは、この要素を持たないクライアントのメッセージがサービスによって受け入れられないようにすることです。そうすれば、ヌルの対応するプロパティをチェックする必要はありません。 –

+0

私は、余分な属性を使わずに、要素を強制的に使用するデフォルトのXMLシリアライザを取得できると思います。生成されたXMLを完全にカスタマイズできるように、IXmlSerializableを実装するオプションがありますか? –

関連する問題