Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Costruttore XmlElementAttribute (String, Type)

 

Data di pubblicazione: ottobre 2016

Inizializza una nuova istanza di XmlElementAttribute e specifica il nome dell'elemento XML e un tipo derivato per il membro a cui il XmlElementAttribute viene applicato. Questo tipo di membro viene utilizzato quando il XmlSerializer serializza l'oggetto che lo contiene.

Spazio dei nomi:   System.Xml.Serialization
Assembly:  System.Xml (in System.Xml.dll)

public XmlElementAttribute(
	string elementName,
	Type type
)

Parametri

elementName
Type: System.String

Nome dell'elemento XML del membro serializzato.

type
Type: System.Type

Il Type di un oggetto derivato dal tipo del membro.

Per impostazione predefinita, il XmlSerializer utilizza il nome del membro come il nome dell'elemento XML quando serializza un'istanza della classe. Ad esempio, un campo denominato Vehicle Genera un elemento XML denominato Vehicle. Tuttavia, se è necessario un elemento diverso, ad esempio Cars, passarla il elementName parametro.

Utilizzare il type parametro per specificare un tipo derivato da una classe di base. Ad esempio, si supponga che una proprietà denominata MyAnimal restituisce un Animal oggetto. Per migliorare l'oggetto, in modo da creare una nuova classe denominata Mammal che eredita la Animal classe. Per indicare il XmlSerializer per accettare la Mammal classe durante la serializzazione di MyAnimal proprietà, passare il Type della Mammal classe al costruttore.

Nell'esempio seguente viene serializzata una classe denominata Orchestra che contiene un unico campo denominato Instruments, che restituisce una matrice di Instrument oggetti. Una seconda classe denominata Brass eredita la Instrument classe. Nell'esempio viene applicato il XmlElementAttribute per il Instruments campo e specifica il Brass tipo, che consente di Instruments campo per accettare Brass oggetti. Nell'esempio specifica inoltre il nome dell'elemento XML impostando la ElementName proprietà.

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

public class Orchestra
{
   public Instrument[] Instruments;
}   

public class Instrument
{
   public string Name;
}

public class Brass:Instrument{
   public bool IsValved;
}

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

    public void SerializeObject(string filename)
    {
      // To write the file, a TextWriter is required.
      TextWriter writer = new StreamWriter(filename);

      XmlAttributeOverrides attrOverrides = 
         new XmlAttributeOverrides();
      XmlAttributes attrs = new XmlAttributes();

      // Creates an XmlElementAttribute that overrides the Instrument type.
      XmlElementAttribute attr = new 
      XmlElementAttribute(typeof(Brass));
      attr.ElementName = "Brass";

      // Adds the element to the collection of elements.
      attrs.XmlElements.Add(attr);
      attrOverrides.Add(typeof(Orchestra), "Instruments", attrs);

      // Creates the XmlSerializer using the XmlAttributeOverrides.
      XmlSerializer s = 
      new XmlSerializer(typeof(Orchestra), attrOverrides);

      // Creates the object to serialize.
      Orchestra band = new Orchestra();

      // Creates an object of the derived type.
      Brass i = new Brass();
      i.Name = "Trumpet";
      i.IsValved = true;
      Instrument[] myInstruments = {i};
      band.Instruments = myInstruments;
      s.Serialize(writer,band);
      writer.Close();
   }

   public void DeserializeObject(string filename)
   {
      XmlAttributeOverrides attrOverrides = 
         new XmlAttributeOverrides();
      XmlAttributes attrs = new XmlAttributes();

      // Creates an XmlElementAttribute that override the Instrument type.
      XmlElementAttribute attr = new 
      XmlElementAttribute(typeof(Brass));
      attr.ElementName = "Brass";

      // Adds the element to the collection of elements.
      attrs.XmlElements.Add(attr);
      attrOverrides.Add(typeof(Orchestra), "Instruments", attrs);

      // Creates the XmlSerializer using the XmlAttributeOverrides.
      XmlSerializer s = 
      new XmlSerializer(typeof(Orchestra), attrOverrides);

      FileStream fs = new FileStream(filename, FileMode.Open);
      Orchestra band = (Orchestra) s.Deserialize(fs);
      Console.WriteLine("Brass:");

      /* Deserializing differs from serializing. To read the 
         derived-object values, declare an object of the derived 
         type (Brass) and cast the Instrument instance to it. */
      Brass b;
      foreach(Instrument i in band.Instruments) 
      {
         b= (Brass)i;
         Console.WriteLine(
         b.Name + "\n" + 
         b.IsValved);
      }
   }
}

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: