XmlAttributes.XmlArrayItems Eigenschaft

Definition

Ruft eine Auflistung von Objekten ab, die die von XmlSerializer verwendete Serialisierung von Elementen angeben, die in ein von öffentlichen Feldern oder Lese-/Schreibeigenschaften zurückgegebenes Array eingefügt wurden, oder legt diese fest.

C#
public System.Xml.Serialization.XmlArrayItemAttributes XmlArrayItems { get; }

Eigenschaftswert

XmlArrayItemAttributes

Ein XmlArrayItemAttributes-Objekt, das eine Auflistung von XmlArrayItemAttribute-Objekten enthält.

Beispiele

Im folgenden Beispiel wird eine Klasse serialisiert, die ein Feld Members enthält, das ein Array von Objekten zurückgibt. Es werden zwei XmlArrayItemAttribute Objekte erstellt, mit denen das Feld Objekte akzeptieren kann, die von der Basisklasse namens abgeleitet Memberwerden. Jedes Objekt wird der XmlAttributes XmlArrayItems Eigenschaft hinzugefügt.

C#
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

// This is the class that will be serialized.
public class Group
{
    public Member [] Members;
}

public class Member
{
    public string MemberName;
}

public class NewMember:Member
{
    public int MemberID;
}

public class RetiredMember:NewMember
{
    public DateTime RetireDate;
}

public class Run
{
   public static void Main()
   {
      Run test = new Run();
      test.SerializeObject("OverrideArrayItem.xml");
      test.DeserializeObject("OverrideArrayItem.xml");
   }

   // Return an XmlSerializer used for overriding.
   public XmlSerializer CreateOverrider()
   {
      // Create XmlAttributeOverrides and XmlAttributes objects.
      XmlAttributeOverrides xOver = new XmlAttributeOverrides();
      XmlAttributes xAttrs = new XmlAttributes();

      // Add an override for the XmlArrayItem.
      XmlArrayItemAttribute xArrayItem =
      new XmlArrayItemAttribute(typeof(NewMember));
      xArrayItem.Namespace = "http://www.cpandl.com";
      xAttrs.XmlArrayItems.Add(xArrayItem);

      // Add a second override.
      XmlArrayItemAttribute xArrayItem2 =
      new XmlArrayItemAttribute(typeof(RetiredMember));
      xArrayItem2.Namespace = "http://www.cpandl.com";
      xAttrs.XmlArrayItems.Add(xArrayItem2);

      // Add all overrides to XmlAttribueOverrides object.
      xOver.Add(typeof(Group), "Members", xAttrs);

      // Create the XmlSerializer and return it.
      return new XmlSerializer(typeof(Group), xOver);
   }

   public void SerializeObject(string filename)
   {
      // Create an instance of the XmlSerializer class.
      XmlSerializer mySerializer =  CreateOverrider();
      // Writing the file requires a TextWriter.
      TextWriter writer = new StreamWriter(filename);

      // Create an instance of the class that will be serialized.
      Group myGroup = new Group();

      // Set the object properties.
      NewMember m = new NewMember();
      m.MemberName = "Paul";
      m.MemberID = 2;

      // Create a second member.
      RetiredMember m2 = new RetiredMember();
      m2.MemberName = "Renaldo";
      m2.MemberID = 23;
      m2.RetireDate = new DateTime(2000, 10,10);

      myGroup.Members = new Member[2] {m, m2};

      // Serialize the class, and close the TextWriter.
      mySerializer.Serialize(writer, myGroup);
      writer.Close();
   }

   public void DeserializeObject(string filename)
   {
      XmlSerializer mySerializer = CreateOverrider();
      FileStream fs = new FileStream(filename, FileMode.Open);
      Group myGroup = (Group)
      mySerializer.Deserialize(fs);
      foreach(Member m in myGroup.Members)
      {
          Console.WriteLine(m.MemberName);
      }
   }
}

Hinweise

Mit der XmlArrayItems Eigenschaft können Sie die abgeleiteten Typen angeben, die in ein Array eingefügt werden können, das von einem öffentlichen Feld oder einer öffentlichen Lese-/Schreibeigenschaft zurückgegeben wird. Erstellen Sie für jeden neuen Typ, den das Feld oder die Eigenschaft akzeptieren soll, ein XmlArrayItemAttribute Objekt und Add es an den XmlArrayItemAttributesvon der XmlArrayItems Eigenschaft zurückgegebenen ) . (Der neue Typ muss vom Typ abgeleitet werden, der bereits vom Feld oder der Eigenschaft akzeptiert wurde.) Add das XmlAttributes Objekt eines XmlAttributeOverrides Objekts und den Typ des Objekts angeben, der das Feld oder die Eigenschaft enthält, und den Namen des Felds oder der Eigenschaft. Erstellen Sie ein XmlSerializer Objekt mit dem XmlAttributeOverrides Objekt, bevor Sie eine Methode aufrufen Serialize oder Deserialize verwenden.

Gilt für

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1
UWP 10.0