Afficher en anglais

Partage via


XmlArrayItemAttribute Classe

Définition

Représente un attribut qui spécifie les types dérivés que le XmlSerializer peut placer dans un tableau sérialisé.

C#
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlArrayItemAttribute : Attribute
Héritage
XmlArrayItemAttribute
Attributs

Exemples

L’exemple suivant sérialise une classe nommée Group qui contient un champ nommé Employees qui retourne un tableau d’objets Employee . L’exemple applique le XmlArrayItemAttribute champ, en indiquant ainsi qu’il XmlSerializer peut insérer des objets du type de classe de base (Employee) et du type de classe dérivée (Manager) dans le tableau sérialisé.

C#
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);
      }
   }
}

Remarques

Il XmlArrayItemAttribute appartient à une famille d’attributs qui contrôle la XmlSerializer sérialisation ou la désérialisation d’un objet. Pour obtenir la liste complète des attributs similaires, consultez Attributs qui contrôlent la sérialisation XML.

Vous pouvez appliquer le XmlArrayItemAttribute membre en lecture/écriture public qui retourne un tableau ou fournit l’accès à celui-ci. Par exemple, un champ qui retourne un tableau d’objets, une collection, une ArrayListclasse ou une classe qui implémente l’interface IEnumerable .

En d’autres termes, le XmlArrayItemAttribute polymorphisme prend en charge l’ajout XmlSerializer d’objets dérivés à un tableau. Par exemple, supposons qu’une classe nommée Mammal soit dérivée d’une classe de base nommée Animal. Supposons également qu’une classe nommée MyAnimals contient un champ qui retourne un tableau d’objets Animal . Pour permettre la XmlSerializer sérialisation à la fois du type et Mammal du Animal type, appliquez XmlArrayItemAttribute le champ deux fois, chaque fois que vous spécifiez l’un des deux types acceptables.

Remarque

Vous pouvez appliquer plusieurs instances du XmlArrayItemAttribute tableau ou XmlElementAttribute spécifier des types d’objets qui peuvent être insérés dans le tableau.

Remarque

La sérialisation d’un champ ou d’une propriété qui retourne une interface ou un tableau d’interfaces n’est pas prise en charge.

Pour plus d’informations sur l’utilisation d’attributs, consultez Attributs.

Remarque

Vous pouvez utiliser le mot XmlArrayItem dans votre code plutôt que plus long XmlArrayItemAttribute.

Constructeurs

XmlArrayItemAttribute()

Initialise une nouvelle instance de la classe XmlArrayItemAttribute.

XmlArrayItemAttribute(String)

Initialise une nouvelle instance de la classe XmlArrayItemAttribute et spécifie le nom de l'élément XML généré dans le document XML.

XmlArrayItemAttribute(String, Type)

Initialise une nouvelle instance de la classe XmlArrayItemAttribute et spécifie le nom de l'élément XML généré dans le document XML et le Type qui peut être inséré dans le document XML généré.

XmlArrayItemAttribute(Type)

Initialise une nouvelle instance de la classe XmlArrayItemAttribute et spécifie le Type qui peut être inséré dans le tableau sérialisé.

Propriétés

DataType

Obtient ou définit le type de données XML de l'élément XML généré.

ElementName

Obtient ou définit le nom de l'élément XML généré.

Form

Obtient ou définit une valeur qui indique si le nom de l'élément XML généré est qualifié.

IsNullable

Obtient ou définit une valeur qui indique si le XmlSerializer doit sérialiser un membre comme balise XML vide lorsque l'attribut xsi:nil a la valeur true.

Namespace

Obtient ou définit l'espace de noms de l'élément XML généré.

NestingLevel

Obtient ou définit le niveau dans une hiérarchie d'éléments XML affectés par XmlArrayItemAttribute.

Type

Obtient ou définit le type autorisé dans un tableau.

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage de cette instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Produit Versions
.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

Voir aussi