XmlArrayItemAttribute.IsNullable Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe ou define um valor que indica se deve XmlSerializer serializar um membro como uma etiqueta XML vazia com o xsi:nil atributo definido como true.
public:
property bool IsNullable { bool get(); void set(bool value); };
public bool IsNullable { get; set; }
member this.IsNullable : bool with get, set
Public Property IsNullable As Boolean
Valor de Propriedade
true se o XmlSerializer gerar o xsi:nil atributo; caso contrário, false, e nenhuma instância é gerada. A predefinição é true.
Exemplos
O exemplo seguinte serializa uma classe chamada Group, que contém um campo nomeado Employees que devolve um array de Employee objetos. Uma segunda classe chamada Manager deriva de Employee. An XmlArrayItemAttribute especifica que pode XmlSerializer inserir tanto Employee objetos como Manager objetos no array. O exemplo define a IsNullable propriedade, dizendo assim ao XmlSerializer não para gerar os xsi:nil objetos de atributo no array definido para null.
using System;
using System.IO;
using System.Xml.Serialization;
public class Group
{
[XmlArray(IsNullable = true)]
[XmlArrayItem(typeof(Manager), IsNullable = false),
XmlArrayItem(typeof(Employee), IsNullable = false)]
public Employee[] Employees;
}
public class Employee
{
public string Name;
}
public class Manager:Employee
{
public int Level;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("TypeDoc.xml");
}
public void SerializeObject(string filename)
{
XmlSerializer s = new XmlSerializer(typeof(Group));
// To write the file, a TextWriter is required.
TextWriter writer = new StreamWriter(filename);
// Creates the object to serialize.
Group group = new Group();
// Creates a null Manager object.
Manager mgr = null;
// Creates a null Employee object.
Employee y = null;
group.Employees = new Employee[2] {mgr, y};
// Serializes the object and closes the TextWriter.
s.Serialize(writer, group);
writer.Close();
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml.Serialization
Public Class Group
<XmlArray(IsNullable := True), _
XmlArrayItem(GetType(Manager), IsNullable := False), _
XmlArrayItem(GetType(Employee), IsNullable := False)> _
Public Employees() As Employee
End Class
Public Class Employee
Public Name As String
End Class
Public Class Manager
Inherits Employee
Public Level As Integer
End Class
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeObject("TypeDoc.xml")
End Sub
Public Sub SerializeObject(filename As String)
Dim s As New XmlSerializer(GetType(Group))
' To write the file, a TextWriter is required.
Dim writer As New StreamWriter(filename)
' Creates the object to serialize.
Dim group As New Group()
' Creates a null Manager object.
Dim mgr As Manager = Nothing
' Creates a null Employee object.
Dim y As Employee = Nothing
group.Employees = New Employee() {mgr, y}
' Serializes the object and closes the TextWriter.
s.Serialize(writer, group)
writer.Close()
End Sub
End Class
Observações
A especificação de esquema XML para estruturas permite que um documento XML sinalize explicitamente que o conteúdo de um elemento está em falta. Tal elemento contém o atributo xsi:nil conjunto de true. Para mais informações, consulte a especificação do World Wide Web Consortium intitulada XML Schema Parte 1: Estruturas.
Se a IsNullable propriedade for true, o xsi:nil atributo é gerado para membros da classe que foram definidos como null. Por exemplo, se definir um campo com o nome MyStringArray de null, gera XmlSerializer o seguinte código XML.
<MyStringArray xsi:nil = "true" />
Se a IsNullable propriedade for false, não é gerado nenhum elemento XML.
Note
Não pode aplicar a IsNullable propriedade a um membro tipado como tipo de valor porque um tipo de valor não pode conter null.