Compartir a través de


Compatibilidad con enlaces del atributo Nillable

Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.

.NET Framework proporciona compatibilidad de enlace parcial para el atributo nillable.

Explicación

Cuando el atributo nillable se establece en true en una declaración <element>, se permite que aparezca un atributo xsi:nil en un elemento compatible de un documento XML de instancia. (El prefijo xsi se suele usar para el espacio de nombres de esquema XML de instancia, http://www.w3.org/2001/XMLSchema-instance).

Un valor true para el atributo xsi:nil de un elemento XML especifica explícitamente que el elemento no tiene contenido, tanto si se trata de elementos secundarios como de texto propiamente dicho. La clase XmlSerializer equipara un valor true del atributo nil con una referencia nula (Nothing en Visual Basic). Consulte el atributo xsi:nil para saber cómo la clase XmlSerializer serializa y deserializa el atributo nil, incluso en casos especiales.

Si se declara un elemento con nillable="false" o sin un atributo nillable, no puede aparecer ningún atributo nil con validez en un elemento de instancia correspondiente, sea cual sea su valor.

Generar el atributo nillable a partir de código

Cuando se genera un documento de esquema XML a partir de un conjunto de clases de un ensamblado, Xsd.exe crea un atributo nillable para un miembro de un tipo de valor si el tipo acepta valores NULL. Esto se debe a que los tipos de valor se pueden establecer en una referencia nula (Nothing).

En un objeto de un tipo de referencia, Xsd.exe comprueba el valor de la propiedad IsNullable de algunos atributos relacionados con XML. Si la propiedad IsNullable se establece en un valor true, Xsd.exe crea un atributo nillable y establece su valor en true. Algunas clases de atributos relacionados con XML usan la propiedad IsNullable. La propiedad aparece de la siguiente forma:

A continuación se muestra un ejemplo de uso:

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

A partir de este código, Xsd.exe genera la siguiente declaración de elemento XSD:

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

Si la propiedad IsNullable se establece en true y se ha establecido un objeto aplicable como referencia nula (Nothing) en tiempo de ejecución, la clase XmlSerializer genera un atributo xsi:nil con un valor true.

La propiedad IsNullable debe establecerse en true para un atributo aplicado a un tipo de valor que acepte valores NULL.

Para los tipos de referencia, el valor de la propiedad IsNullable también determina el valor de un atributo minOccurs del elemento <element>. Un valor true para IsNullable genera un valor minOccurs de 1; en caso contrario, el valor es 0. Consulte el atributo minOccurs.

Xsd.exe también genera una configuración nillable="true" en una declaración <element> en otras circunstancias cuando una propiedad IsNullable no se establece explícitamente en true.

Generar código a partir del atributo nillable

Al encontrar una configuración nillable="true", Xsd.exe genera un parámetro IsNullable=true para el atributo apropiado relacionado con XML que se aplica a la clase o el miembro generado. Para los tipos de valor, se generarán tipos que aceptan valores NULL.

Posibles elementos contenedores: <element>

Vea también

Referencia

Compatibilidad con enlaces del atributo Xsi:nil
System.Xml.Schema.XmlSchemaElement.IsNillable