Nillable 属性のバインディング サポート

このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.

.NET Framework では、nillable 属性のバインディングを一部サポートしています。

説明

nillable 属性が <element> 宣言で true に設定されているとき、xsi:nil 属性は XML インスタンス ドキュメントの準拠する要素に表示されます (プレフィックス xsi は、一般的に XML スキーマ インスタンス名前空間 (http://www.w3.org/2001/XMLSchema-instance) に対して使用されます)。

XML 要素で xsi:nil 属性に true を設定すると、その要素が子要素か本体テキストかに関係なく、要素にコンテンツが存在しないと明示することになります。XmlSerializer クラスでは、nil 属性の値に true が設定されていると、null 参照 (Visual Basic では Nothing) と同等と見なされます。XmlSerializer クラスが nil 属性をシリアル化および逆シリアル化する方法については、xsi:nil 属性を参照してください。

要素が nillable="false"、または nillable 属性がない状態で宣言された場合、nil 属性はその値にかかわらず、対応するインスタンス要素で有効に表示されません。

コードからの nillable 属性の生成

アセンブリの一連のクラスから XML スキーマ ドキュメントを生成するとき、Xsd.exe は NULL 許容型である値型のメンバーに nillable 属性を作成します。これは、値型を null 参照 (Nothing) に設定できるためです。

参照型のオブジェクトに対して、Xsd.exe は特定の XML 関連属性の IsNullable プロパティの値をチェックします。IsNullable プロパティの値が true に設定されている場合、Xsd.exe は nillable 属性を作成し、その値を true に設定します。IsNullable プロパティは、特定の XML 関連属性クラスで使用されます。このプロパティは、次のように現れます。

使用例を次に示します。

[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public string NameNullable;

Xsd.exe は、このコードから次の XSD 要素宣言を生成します。

<xs:element minOccurs="1" maxOccurs="1" name="NameNullable" nillable="true" type="xs:string" />

IsNullable プロパティが true に設定され、適用可能なオブジェクトが実行時に null 参照 (Nothing) に設定されている場合、XmlSerializer クラスは true の値を持つ xsi:nil 属性を生成します。

NULL 許容値型に適用される属性では、IsNullable プロパティを true に設定する必要があります。

参照型の場合、IsNullable プロパティの値は <element> 要素の minOccurs 属性の値も決定します。IsNullable の値が true の場合、minOccurs の値は 1、それ以外の場合は 0 となります。minOccurs 属性を参照してください。

IsNullable プロパティが明示的に true に設定されていないとき、Xsd.exe は、他の特定の状況下で <element> 宣言の nillable="true" 設定も生成します。

nillable 属性からのコードの生成

設定が nillable="true" の場合、Xsd.exe は、生成するクラスまたはメンバーに適用される適切な XML 関連属性に IsNullable=true パラメーターを生成します。値型の場合、NULL 許容型が生成されます。

使用可能なコンテナー要素 : <element>

参照

リファレンス

Xsi:nil 属性のバインディング サポート
System.Xml.Schema.XmlSchemaElement.IsNillable