Nillable Attribute Binding Support
The .NET Framework provides partial binding support for the nillable attribute.
When the nillable attribute is set to true in an <element> declaration, it allows an xsi:nil attribute to appear in a conforming element in an XML instance document. (The prefix xsi is commonly used for the XML Schema instance namespace, http://www.w3.org/2001/XMLSchema-instance.)
A value of true for the xsi:nil attribute in an XML element explicitly specifies that the element has no content, whether child elements or body text. The XmlSerializer class equates a true value for the nil attribute with a null reference (Nothing in Visual Basic). See the xsi:nil attribute for how the XmlSerializer class serializes and deserializes the nil attribute, including special cases.
If an element is declared with nillable="false" or no nillable attribute, a nil attribute cannot validly appear in a corresponding instance element, regardless of its value.
When generating an XML Schema document from a set of classes in an assembly, Xsd.exe create a nillable attribute for a member of a value type if the type is a nullable type. This is because value types can be set to a null reference (Nothing).
For an object of a reference type, Xsd.exe checks the value of certain XML-related attributes' IsNullable property. If the IsNullable property is set to a true value, Xsd.exe creates a nillable attribute and sets its value to true. The IsNullable property is used by certain XML-related attribute classes. The property appears as follows:
An example usage follows:
[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] public string NameNullable;
From this code, Xsd.exe generates the following XSD element declaration:
<xs:element minOccurs="1" maxOccurs="1" name="NameNullable" nillable="true" type="xs:string" />
If the IsNullable property is set to true and at run time an applicable object has been set to a null reference (Nothing), the XmlSerializer class generates an xsi:nil attribute with a value of true.
The IsNullable property must be set to true for an attribute applied to a nullable value type.
For reference types, the value of the IsNullable property also determines the value of an <element> element's minOccurs attribute. A true value for IsNullable produces a minOccurs value of 1; otherwise, the value is 0. See the minOccurs attribute.
Xsd.exe also generates a nillable="true" setting in an <element> declaration in certain other circumstances when an IsNullable property is not explicitly set to true.
When encountering a nillable="true" setting, Xsd.exe generates an IsNullable=true parameter for the appropriate XML-related attribute that is applied to the generated class or member. For value types, nullable types will be generated.
Possible containing elements: <element>