XmlArrayItemAttribute Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar ett attribut som anger de härledda typerna som XmlSerializer kan placera i en serialiserad matris.
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
- Arv
- Attribut
Exempel
I följande exempel serialiseras en klass med namnet Group som innehåller ett fält med namnet Employees som returnerar en matris med Employee objekt. Exemplet gäller XmlArrayItemAttribute för fältet och instruerar XmlSerializer därmed att det kan infoga objekt av både basklasstypen (Employee) och den härledda klasstypen (Manager) i den serialiserade matrisen.
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
Kommentarer
XmlArrayItemAttribute Tillhör en familj av attribut som styr hur XmlSerializer serialiserar eller deserialiserar ett objekt. En fullständig lista över liknande attribut finns i Attribut som styr XML-serialisering.
Du kan använda för XmlArrayItemAttribute alla offentliga läs-/skrivmedlemmar som returnerar en matris eller ger åtkomst till en. Till exempel ett fält som returnerar en matris med objekt, en samling, en ArrayListeller någon klass som implementerar IEnumerable gränssnittet.
Stöder XmlArrayItemAttribute polymorfism , med andra ord tillåter XmlSerializer det att du lägger till härledda objekt i en matris. Anta till exempel att en klass med namnet Mammal härleds från en basklass med namnet Animal. Anta vidare att en klass med namnet MyAnimals innehåller ett fält som returnerar en matris med Animal objekt. Om du vill tillåta XmlSerializer att serialisera både Animal och-typen Mammal använder du XmlArrayItemAttribute fältet två gånger, varje gång du anger en av de två godkända typerna.
Note
Du kan använda flera instanser av XmlArrayItemAttribute eller XmlElementAttribute för att ange typer av objekt som kan infogas i matrisen.
Note
Serialiseringen av ett fält eller en egenskap som returnerar ett gränssnitt eller en matris med gränssnitt stöds inte.
Mer information om hur du använder attribut finns i Attribut.
Note
Du kan använda ordet XmlArrayItem i koden i stället för längre XmlArrayItemAttribute.
Konstruktorer
| Name | Description |
|---|---|
| XmlArrayItemAttribute() |
Initierar en ny instans av XmlArrayItemAttribute klassen. |
| XmlArrayItemAttribute(String, Type) |
Initierar en ny instans av XmlArrayItemAttribute klassen och anger namnet på XML-elementet som genereras i XML-dokumentet och Type som kan infogas i det genererade XML-dokumentet. |
| XmlArrayItemAttribute(String) |
Initierar en ny instans av XmlArrayItemAttribute klassen och anger namnet på XML-elementet som genereras i XML-dokumentet. |
| XmlArrayItemAttribute(Type) |
Initierar en ny instans av XmlArrayItemAttribute klassen och anger vilka Type som kan infogas i den serialiserade matrisen. |
Egenskaper
| Name | Description |
|---|---|
| DataType |
Hämtar eller anger XML-datatypen för det genererade XML-elementet. |
| ElementName |
Hämtar eller anger namnet på det genererade XML-elementet. |
| Form |
Hämtar eller anger ett värde som anger om namnet på det genererade XML-elementet är kvalificerat. |
| IsNullable |
Hämtar eller anger ett värde som anger om XmlSerializer måste serialisera en medlem som en tom XML-tagg med |
| Namespace |
Hämtar eller anger namnområdet för det genererade XML-elementet. |
| NestingLevel |
Hämtar eller anger nivån i en hierarki med XML-element som påverkas XmlArrayItemAttribute . |
| Type |
Hämtar eller anger den typ som tillåts i en matris. |
| TypeId |
När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute. (Ärvd från Attribute) |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt. (Ärvd från Attribute) |
| GetHashCode() |
Returnerar hash-koden för den här instansen. (Ärvd från Attribute) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| IsDefaultAttribute() |
När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen. (Ärvd från Attribute) |
| Match(Object) |
När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt. (Ärvd från Attribute) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare. (Ärvd från Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt. (Ärvd från Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1). (Ärvd från Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Ger åtkomst till egenskaper och metoder som exponeras av ett objekt. (Ärvd från Attribute) |
Gäller för
Se även
- XmlArrayAttribute
- XmlSerializer
- XmlArrayItems
- XmlAttributeOverrides
- XmlAttributes
- Introduktion till XML-serialisering
- Anvisningar: Ange ett alternativt elementnamn för en XML-dataström
- Kontrollera XML-serialisering med hjälp av attribut
- Exempel på XML-serialisering
- XML-schemadefinitionsverktyg (Xsd.exe)