XmlArrayItemAttribute Klas

Definitie

Vertegenwoordigt een kenmerk dat de afgeleide typen aangeeft die in XmlSerializer een geserialiseerde matrix kunnen worden geplaatst.

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
Overname
XmlArrayItemAttribute
Kenmerken

Voorbeelden

In het volgende voorbeeld wordt een klasse geserialiseerd Group die een veld bevat dat Employees een matrix met Employee objecten retourneert. In het voorbeeld wordt het XmlArrayItemAttribute veld toegepast, waardoor het XmlSerializer objecten van zowel het basisklassetype () als het afgeleide klassetype (EmployeeManager) in de geserialiseerde matrix kan invoegen.

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

Opmerkingen

De XmlArrayItemAttribute eigenschap behoort tot een reeks kenmerken die bepalen hoe een XmlSerializer object wordt geserialiseerd of gedeserialiseerd. Zie Kenmerken die XML-serialisatie regelen voor een volledige lijst met vergelijkbare kenmerken.

U kunt het XmlArrayItemAttribute toepassen op elk openbaar lees-/schrijflid dat een matrix retourneert of toegang biedt tot een matrix. Een veld dat bijvoorbeeld een matrix met objecten, een verzameling, een ArrayListof een klasse retourneert die de IEnumerable interface implementeert.

Het XmlArrayItemAttribute ondersteunt polymorfisme, met andere woorden, het maakt het mogelijk XmlSerializer om afgeleide objecten toe te voegen aan een matrix. Stel dat een klasse met de naam Mammal is afgeleid van een basisklasse met de naam Animal. Stel dat een klasse met de naam MyAnimals een veld bevat dat een matrix met Animal objecten retourneert. Als u wilt toestaan dat zowel het XmlSerializer als Animal het type worden geserialiseerd, past u het MammalXmlArrayItemAttribute veld tweemaal toe, telkens wanneer u een van de twee acceptabele typen opgeeft.

Note

U kunt meerdere exemplaren van de XmlArrayItemAttribute of XmlElementAttribute typen objecten opgeven die in de matrix kunnen worden ingevoegd.

Note

De serialisatie van een veld of eigenschap die een interface of matrix met interfaces retourneert, wordt niet ondersteund.

Zie Kenmerken voor meer informatie over het gebruik van kenmerken.

Note

U kunt het woord XmlArrayItem in uw code gebruiken in plaats van langer XmlArrayItemAttribute.

Constructors

Name Description
XmlArrayItemAttribute()

Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse.

XmlArrayItemAttribute(String, Type)

Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse en geeft de naam op van het XML-element dat is gegenereerd in het XML-document en de Type naam die kan worden ingevoegd in het gegenereerde XML-document.

XmlArrayItemAttribute(String)

Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse en geeft de naam op van het XML-element dat is gegenereerd in het XML-document.

XmlArrayItemAttribute(Type)

Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse en geeft aan welke Type kan worden ingevoegd in de geserialiseerde matrix.

Eigenschappen

Name Description
DataType

Hiermee wordt het XML-gegevenstype van het gegenereerde XML-element opgehaald of ingesteld.

ElementName

Hiermee haalt u de naam van het gegenereerde XML-element op of stelt u deze in.

Form

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de naam van het gegenereerde XML-element is gekwalificeerd.

IsNullable

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het XmlSerializer lid moet worden geserialiseerd als een lege XML-tag met het xsi:nil kenmerk ingesteld op true.

Namespace

Hiermee wordt de naamruimte van het gegenereerde XML-element opgehaald of ingesteld.

NestingLevel

Hiermee haalt u het niveau op in een hiërarchie van XML-elementen die van invloed zijn op het XmlArrayItemAttribute niveau.

Type

Hiermee haalt u het type op dat is toegestaan in een matrix of stelt u dit in.

TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op

Zie ook