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