XmlArrayItemAttribute Osztály

Definíció

Olyan attribútumot jelöl, amely meghatározza a szerializált tömbben elhelyezhető származtatott típusokat XmlSerializer .

public ref class XmlArrayItemAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlArrayItemAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlArrayItemAttribute = class
    inherit Attribute
Public Class XmlArrayItemAttribute
Inherits Attribute
Öröklődés
XmlArrayItemAttribute
Attribútumok

Példák

Az alábbi példa szerializál egy osztálytGroup, amely egy objektumtömböt Employees visszaadó mezőt Employee tartalmaz. A példa a XmlArrayItemAttribute mezőt alkalmazza, így arra utasítja, XmlSerializer hogy az alaposztály (Employee) és a származtatott osztálytípus (Manager) objektumait is be tudja szúrni a szerializált tömbbe.

using System;
using System.IO;
using System.Xml.Serialization;

public class Group
{
   /* The XmlArrayItemAttribute allows the XmlSerializer to insert
      both the base type (Employee) and derived type (Manager)
      into serialized arrays. */

   [XmlArrayItem(typeof(Manager)),
   XmlArrayItem(typeof(Employee))]
   public Employee[] Employees;

   /* Use the XmlArrayItemAttribute to specify types allowed
      in an array of Object items. */
   [XmlArray]
   [XmlArrayItem (typeof(int),
   ElementName = "MyNumber"),
   XmlArrayItem (typeof(string),
   ElementName = "MyString"),
   XmlArrayItem(typeof(Manager))]
   public object [] ExtraInfo;
}

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");
      test.DeserializeObject("TypeDoc.xml");
   }

   public void SerializeObject(string filename)
   {
      // Creates a new XmlSerializer.
      XmlSerializer s = new XmlSerializer(typeof(Group));

      // Writing the XML file to disk requires a TextWriter.
      TextWriter writer = new StreamWriter(filename);
      Group group = new Group();

      Manager manager = new Manager();
      Employee emp1 = new Employee();
      Employee emp2 = new Employee();
      manager.Name = "Consuela";
      manager.Level = 3;
      emp1.Name = "Seiko";
      emp2.Name = "Martina";
      Employee [] emps = new Employee[3]{manager, emp1, emp2};
      group.Employees = emps;

      // Creates an int and a string and assigns to ExtraInfo.
      group.ExtraInfo = new Object[3]{43, "Extra", manager};

      // Serializes the object, and closes the StreamWriter.
      s.Serialize(writer, group);
      writer.Close();
   }

   public void DeserializeObject(string filename)
   {
      FileStream fs = new FileStream(filename, FileMode.Open);
      XmlSerializer x = new XmlSerializer(typeof(Group));
      Group g = (Group) x.Deserialize(fs);
      Console.WriteLine("Members:");

      foreach(Employee e in g.Employees)
      {
         Console.WriteLine("\t" + e.Name);
      }
   }
}
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml.Serialization

Public Class Group
    ' The XmlArrayItemAttribute allows the XmlSerializer to insert
    ' both the base type (Employee) and derived type (Manager)
    ' into serialized arrays. 
    
    <XmlArrayItem(GetType(Manager)), _
     XmlArrayItem(GetType(Employee))> _
    Public Employees() As Employee
    
    ' Use the XmlArrayItemAttribute to specify types allowed
    ' in an array of Object items. 
    <XmlArray(), _
     XmlArrayItem(GetType(Integer), ElementName := "MyNumber"), _
     XmlArrayItem(GetType(String), ElementName := "MyString"), _
     XmlArrayItem(GetType(Manager))> _
    Public ExtraInfo() As Object
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")
        test.DeserializeObject("TypeDoc.xml")
    End Sub
    
       
    Public Sub SerializeObject(ByVal filename As String)
        ' Creates a new XmlSerializer.
        Dim s As New XmlSerializer(GetType(Group))
        
        ' Writing the XML file to disk requires a TextWriter.
        Dim writer As New StreamWriter(filename)
        Dim group As New Group()
        
        Dim manager As New Manager()
        Dim emp1 As New Employee()
        Dim emp2 As New Employee()
        manager.Name = "Consuela"
        manager.Level = 3
        emp1.Name = "Seiko"
        emp2.Name = "Martina"
        Dim emps() As Employee = {manager, emp1, emp2}
        group.Employees = emps
        
        ' Creates an int and a string and assigns to ExtraInfo.
        group.ExtraInfo = New Object() {43, "Extra", manager}
        
        ' Serializes the object, and closes the StreamWriter.
        s.Serialize(writer, group)
        writer.Close()
    End Sub
    
    
    Public Sub DeserializeObject(ByVal filename As String)
        Dim fs As New FileStream(filename, FileMode.Open)
        Dim x As New XmlSerializer(GetType(Group))
        Dim g As Group = CType(x.Deserialize(fs), Group)
        Console.WriteLine("Members:")
        
        Dim e As Employee
        For Each e In  g.Employees
            Console.WriteLine(ControlChars.Tab & e.Name)
        Next e
    End Sub
End Class

Megjegyzések

Az XmlArrayItemAttribute attribútumcsalád az objektum szerializálásának vagy deszerializálásának módját szabályozza XmlSerializer . A hasonló attribútumok teljes listáját az XML-szerializálást vezérlő attribútumok című témakörben találja.

Alkalmazhatja a XmlArrayItemAttribute tömböt visszaíró nyilvános olvasási/írási tagra, vagy hozzáférést biztosít egyhez. Például egy olyan mező, amely objektumtömböt, gyűjteményt ArrayList, egy , vagy bármely olyan osztályt ad vissza, amely megvalósítja az interfészt IEnumerable .

A XmlArrayItemAttribute polimorfizmust támogatja , más szóval lehetővé teszi származtatott XmlSerializer objektumok hozzáadását egy tömbhöz. Tegyük fel például, hogy egy elnevezett Mammal osztály egy nevesített Animalalaposztályból származik. Tegyük fel továbbá, hogy egy elnevezett MyAnimals osztály tartalmaz egy olyan mezőt, amely egy objektumtömböt Animal ad vissza. Ha engedélyezni szeretné, hogy a XmlSerializer szerializálja mind a AnimalMammal két típust, alkalmazza a XmlArrayItemAttribute mezőt kétszer, minden alkalommal, amikor a két elfogadható típus egyikét adja meg.

Note

A tömbbe beszúrható objektumtípusok több példányát XmlArrayItemAttributeXmlElementAttribute is alkalmazhatja.

Note

Nem támogatott egy olyan mező vagy tulajdonság szerializálása, amely interfészt vagy interfésztömböt ad vissza.

Az attribútumok használatáról további információt az Attribútumok című témakörben talál.

Note

A hosszabb helyett használhatja a szót XmlArrayItem a XmlArrayItemAttributekódban.

Konstruktorok

Name Description
XmlArrayItemAttribute()

Inicializálja a XmlArrayItemAttribute osztály új példányát.

XmlArrayItemAttribute(String, Type)

Inicializálja az XmlArrayItemAttribute osztály új példányát, és megadja az XML-dokumentumban létrehozott ÉS a Type létrehozott XML-dokumentumba beilleszthető XML-elem nevét.

XmlArrayItemAttribute(String)

Inicializálja az XmlArrayItemAttribute osztály új példányát, és megadja az XML-dokumentumban létrehozott XML-elem nevét.

XmlArrayItemAttribute(Type)

Inicializálja az XmlArrayItemAttribute osztály új példányát, és megadja a Type szerializált tömbbe beilleszthető példányt.

Tulajdonságok

Name Description
DataType

Lekéri vagy beállítja a létrehozott XML-elem XML-adattípusát.

ElementName

Lekéri vagy beállítja a létrehozott XML-elem nevét.

Form

Lekéri vagy beállít egy értéket, amely jelzi, hogy a létrehozott XML-elem neve minősített-e.

IsNullable

Lekéri vagy beállít egy értéket, amely jelzi, hogy a XmlSerializer tagnak üres XML-címkeként kell-e szerializálnia egy tagot, és az attribútum értéke a xsi:nil következő true.

Namespace

Lekéri vagy beállítja a létrehozott XML-elem névterét.

NestingLevel

Lekéri vagy beállítja a szintet az érintett XML-elemek hierarchiájában XmlArrayItemAttribute .

Type

Lekéri vagy beállítja a tömbben engedélyezett típust.

TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes:

Lásd még