XmlAttributeOverrides.Add XmlAttributeOverrides.Add XmlAttributeOverrides.Add Method

Definition

Fügt der Auflistung von XmlAttributes-Objekten ein XmlAttributes-Objekt hinzu.Adds an XmlAttributes object to the collection of XmlAttributes objects.

Überlädt

Add(Type, XmlAttributes) Add(Type, XmlAttributes) Add(Type, XmlAttributes)

Fügt der Auflistung von XmlAttributes-Objekten ein XmlAttributes-Objekt hinzu.Adds an XmlAttributes object to the collection of XmlAttributes objects. Der type-Parameter gibt ein Objekt an, das vom XmlAttributes-Objekt überschrieben werden soll.The type parameter specifies an object to be overridden by the XmlAttributes object.

Add(Type, String, XmlAttributes) Add(Type, String, XmlAttributes) Add(Type, String, XmlAttributes)

Fügt der Auflistung von XmlAttributes-Objekten ein XmlAttributes-Objekt hinzu.Adds an XmlAttributes object to the collection of XmlAttributes objects. Der type-Parameter gibt ein Objekt an, das überschrieben werden soll.The type parameter specifies an object to be overridden. Der member-Parameter gibt den Namen des zu überschreibenden Members an.The member parameter specifies the name of a member that is overridden.

Add(Type, XmlAttributes) Add(Type, XmlAttributes) Add(Type, XmlAttributes)

Fügt der Auflistung von XmlAttributes-Objekten ein XmlAttributes-Objekt hinzu.Adds an XmlAttributes object to the collection of XmlAttributes objects. Der type-Parameter gibt ein Objekt an, das vom XmlAttributes-Objekt überschrieben werden soll.The type parameter specifies an object to be overridden by the XmlAttributes object.

public:
 void Add(Type ^ type, System::Xml::Serialization::XmlAttributes ^ attributes);
public void Add (Type type, System.Xml.Serialization.XmlAttributes attributes);
member this.Add : Type * System.Xml.Serialization.XmlAttributes -> unit

Parameter

type
Type Type Type

Der Type des Objekts, das überschrieben wird.The Type of the object that is overridden.

attributes
XmlAttributes XmlAttributes XmlAttributes

Ein XmlAttributes-Objekt, das die überschreibenden Attribute darstellt.An XmlAttributes object that represents the overriding attributes.

Beispiele

Im folgenden Beispiel wird die Klasse serialisiert Band abgeleitet von einer Klasse namens Orchestra.The following example serializes a class named Band which is derived from a class named Orchestra. Das Beispiel erstellt eine XmlRootAttribute -Objekt und weist sie der XmlRoot Eigenschaft eine XmlAttributes Objekt.The example creates an XmlRootAttribute object, and assigns it to the XmlRoot property of an XmlAttributes object. Das Beispiel ruft dann die Add -Methode zum Hinzufügen der XmlAttributes -Objekt an die XmlAttributeOverrides Objekt.The example then calls the Add method to add the XmlAttributes object to the XmlAttributeOverrides object.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;

ref class Band;
ref class Instrument;

/* This is the class that will be overridden. The XmlIncludeAttribute 
tells the XmlSerializer that the overriding type exists. */

[XmlInclude(Band::typeid)]
public ref class Orchestra
{
public:
   array<Instrument^>^Instruments;
};

// This is the overriding class.
public ref class Band: public Orchestra
{
public:
   String^ BandName;
};

public ref class Instrument
{
public:
   String^ Name;
};

void SerializeObject( String^ filename )
{
   /* Each object that is being overridden requires 
      an XmlAttributes object. */
   XmlAttributes^ attrs = gcnew XmlAttributes;

   // An XmlRootAttribute allows overriding the Orchestra class.
   XmlRootAttribute^ xmlRoot = gcnew XmlRootAttribute;

   // Set the object to the XmlAttribute.XmlRoot property.
   attrs->XmlRoot = xmlRoot;

   // Create an XmlAttributeOverrides object.
   XmlAttributeOverrides^ attrOverrides = gcnew XmlAttributeOverrides;

   // Add the XmlAttributes to the XmlAttributeOverrrides.
   attrOverrides->Add( Orchestra::typeid, attrs );

   // Create the XmlSerializer using the XmlAttributeOverrides.
   XmlSerializer^ s = gcnew XmlSerializer( Orchestra::typeid,attrOverrides );

   // Writing the file requires a TextWriter.
   TextWriter^ writer = gcnew StreamWriter( filename );

   // Create the object using the derived class.
   Band^ band = gcnew Band;
   band->BandName = "NewBand";

   // Create an Instrument.
   Instrument^ i = gcnew Instrument;
   i->Name = "Trumpet";
   array<Instrument^>^myInstruments = {i};
   band->Instruments = myInstruments;

   // Serialize the object.
   s->Serialize( writer, band );
   writer->Close();
}

void DeserializeObject( String^ filename )
{
   XmlAttributes^ attrs = gcnew XmlAttributes;
   XmlRootAttribute^ attr = gcnew XmlRootAttribute;
   attrs->XmlRoot = attr;
   XmlAttributeOverrides^ attrOverrides = gcnew XmlAttributeOverrides;
   attrOverrides->Add( Orchestra::typeid, "Instruments", attrs );
   XmlSerializer^ s = gcnew XmlSerializer( Orchestra::typeid,attrOverrides );
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );

   // Deserialize the Band object.
   Band^ band = dynamic_cast<Band^>(s->Deserialize( fs ));
   Console::WriteLine( "Brass:" );
   System::Collections::IEnumerator^ myEnum = band->Instruments->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Instrument^ i = safe_cast<Instrument^>(myEnum->Current);
      Console::WriteLine( i->Name );
   }
}

int main()
{
   SerializeObject( "Override.xml" );
   DeserializeObject( "Override.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;

/* This is the class that will be overridden. The XmlIncludeAttribute 
tells the XmlSerializer that the overriding type exists. */

[XmlInclude(typeof(Band))]
public class Orchestra
{
   public Instrument[] Instruments;
}   

// This is the overriding class.
public class Band:Orchestra
{
   public string BandName;
}

public class Instrument
{
   public string Name;
}

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


    public void SerializeObject(string filename)
    {
      /* Each object that is being overridden requires 
      an XmlAttributes object. */
      XmlAttributes attrs = new XmlAttributes();

      // An XmlRootAttribute allows overriding the Orchestra class.
      XmlRootAttribute xmlRoot = new XmlRootAttribute();

      // Set the object to the XmlAttribute.XmlRoot property.
      attrs.XmlRoot = xmlRoot;

      // Create an XmlAttributeOverrides object.
      XmlAttributeOverrides attrOverrides = 
      new XmlAttributeOverrides();

      // Add the XmlAttributes to the XmlAttributeOverrrides.
      attrOverrides.Add(typeof(Orchestra), attrs);

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

      // Writing the file requires a TextWriter.
      TextWriter writer = new StreamWriter(filename);

      // Create the object using the derived class.
      Band band = new Band();
      band.BandName = "NewBand";

      // Create an Instrument.
      Instrument i = new Instrument();
      i.Name = "Trumpet";
      Instrument[] myInstruments = {i};
      band.Instruments = myInstruments;

      // Serialize the object.
      s.Serialize(writer,band);
      writer.Close();
   }

   public void DeserializeObject(string filename)
   {
      XmlAttributes attrs = new XmlAttributes();
      XmlRootAttribute attr = new XmlRootAttribute();
      attrs.XmlRoot = attr;
      XmlAttributeOverrides attrOverrides = 
         new XmlAttributeOverrides();

      attrOverrides.Add(typeof(Orchestra), "Instruments", attrs);

      XmlSerializer s = 
      new XmlSerializer(typeof(Orchestra), attrOverrides);

      FileStream fs = new FileStream(filename, FileMode.Open);

      // Deserialize the Band object.
      Band band = (Band) s.Deserialize(fs);
      Console.WriteLine("Brass:");

      foreach(Instrument i in band.Instruments) 
      {
         Console.WriteLine(i.Name);
      }
   }
}

Option Explicit
Option Strict

Imports System
Imports System.IO
Imports System.Xml.Serialization


' This is the class that will be overridden. The XmlIncludeAttribute
' tells the XmlSerializer that the overriding type exists. 
<XmlInclude(GetType(Band))> _
Public Class Orchestra
    Public Instruments() As Instrument
End Class

' This is the overriding class.
Public Class Band
    Inherits Orchestra
    Public BandName As String
End Class

Public Class Instrument
    Public Name As String
End Class

Public Class Run
    
    Public Shared Sub Main()
        Dim test As New Run()
        test.SerializeObject("Override.xml")
        test.DeserializeObject("Override.xml")
    End Sub    
    
    Public Sub SerializeObject(ByVal filename As String)
        ' Each object that is being overridden requires
        ' an XmlAttributes object. 
        Dim attrs As New XmlAttributes()
        
        ' An XmlRootAttribute allows overriding the Orchestra class.
        Dim xmlRoot As New XmlRootAttribute()
        
        ' Set the object to the XmlAttribute.XmlRoot property.
        attrs.XmlRoot = xmlRoot
        
        ' Create an XmlAttributeOverrides object.
        Dim attrOverrides As New XmlAttributeOverrides()
        
        ' Add the XmlAttributes to the XmlAttributeOverrrides.
        attrOverrides.Add(GetType(Orchestra), attrs)
        
        ' Create the XmlSerializer using the XmlAttributeOverrides.
        Dim s As New XmlSerializer(GetType(Orchestra), attrOverrides)
        
        ' Writing the file requires a TextWriter.
        Dim writer As New StreamWriter(filename)
        
        ' Create the object using the derived class.
        Dim band As New Band()
        band.BandName = "NewBand"
        
        ' Create an Instrument.
        Dim i As New Instrument()
        i.Name = "Trumpet"
        Dim myInstruments() As Instrument = {i}
        band.Instruments = myInstruments
        
        ' Serialize the object.
        s.Serialize(writer, band)
        writer.Close()
    End Sub    
    
    Public Sub DeserializeObject(ByVal filename As String)
        Dim attrs As New XmlAttributes()
        Dim attr As New XmlRootAttribute()
        attrs.XmlRoot = attr
        Dim attrOverrides As New XmlAttributeOverrides()
        
        attrOverrides.Add(GetType(Orchestra), "Instruments", attrs)
        
        Dim s As New XmlSerializer(GetType(Orchestra), attrOverrides)
        
        Dim fs As New FileStream(filename, FileMode.Open)
        
        ' Deserialize the Band object.
        Dim band As Band = CType(s.Deserialize(fs), Band)
        Console.WriteLine("Brass:")
        
        Dim i As Instrument
        For Each i In  band.Instruments
            Console.WriteLine(i.Name)
        Next i
    End Sub
End Class

Hinweise

Die XmlAttributes Objekt enthält eine Union von Attributobjekten, die dazu führen, dass die XmlSerializer sein Standardverhalten für die Serialisierung für einen Satz von Objekten zu überschreiben.The XmlAttributes object contains a union of attribute objects that cause the XmlSerializer to override its default serialization behavior for a set of objects. Die Attributobjekte in Platzieren der XmlAttributes -Objekt, abhängig von dem bestimmten Verhalten, die Sie überschreiben möchten.You choose the attribute objects to place in the XmlAttributes object, depending on the particular behaviors you want to override. Z. B. die XmlSerializer serialisiert einen Klassenmember als XML-Element in der Standardeinstellung.For example, the XmlSerializer serializes a class member as an XML element by default. Wenn Sie Member stattdessen als eine XML-Attribut serialisiert werden soll, erstellen Sie eine XmlAttributeAttribute, weisen sie Sie der XmlAttribute Eigenschaft eine XmlAttributes, und fügen die XmlAttributes -Objekt die XmlAttributeOverrides Objekt.If you want the member to be serialized as an XM attribute instead, you would create an XmlAttributeAttribute, assign it to the XmlAttribute property of an XmlAttributes, and add the XmlAttributes object to the XmlAttributeOverrides object.

Mit dieser Überladung können Sie außer Kraft setzen eine XmlRootAttribute oder XmlTypeAttribute.Use this overload to override an XmlRootAttribute or XmlTypeAttribute.

Siehe auch

Add(Type, String, XmlAttributes) Add(Type, String, XmlAttributes) Add(Type, String, XmlAttributes)

Fügt der Auflistung von XmlAttributes-Objekten ein XmlAttributes-Objekt hinzu.Adds an XmlAttributes object to the collection of XmlAttributes objects. Der type-Parameter gibt ein Objekt an, das überschrieben werden soll.The type parameter specifies an object to be overridden. Der member-Parameter gibt den Namen des zu überschreibenden Members an.The member parameter specifies the name of a member that is overridden.

public:
 void Add(Type ^ type, System::String ^ member, System::Xml::Serialization::XmlAttributes ^ attributes);
public void Add (Type type, string member, System.Xml.Serialization.XmlAttributes attributes);
member this.Add : Type * string * System.Xml.Serialization.XmlAttributes -> unit

Parameter

type
Type Type Type

Der Type des zu überschreibenden Objekts.The Type of the object to override.

member
String String String

Der Name des zu überschreibenden Members.The name of the member to override.

attributes
XmlAttributes XmlAttributes XmlAttributes

Ein XmlAttributes-Objekt, das die überschreibenden Attribute darstellt.An XmlAttributes object that represents the overriding attributes.

Beispiele

Das folgende Beispiel erstellt eine XmlAttributeAttribute -Objekt und weist sie der XmlAttribute Eigenschaft eine XmlAttributes Objekt.The following example creates an XmlAttributeAttribute object, and assigns it to the XmlAttribute property of an XmlAttributes object. Im Beispiel fügt dann die XmlAttributes -Objekt an eine XmlAttributeOverrides Objekt vor dem Erstellen einer XmlSerializer.The example then adds the XmlAttributes object to an XmlAttributeOverrides object, before creating an XmlSerializer.

// This is the class that will be serialized.
public ref class Group
{
public:
   String^ GroupName;

   [XmlAttributeAttribute]
   int GroupCode;
};

public ref class Sample
{
public:
   XmlSerializer^ CreateOverrider()
   {
      // Create an XmlAttributeOverrides object. 
      XmlAttributeOverrides^ xOver = gcnew XmlAttributeOverrides;

      /* Create an XmlAttributeAttribute to override the base class
            object's XmlAttributeAttribute object. Give the overriding object
            a new attribute name ("Code"). */
      XmlAttributeAttribute^ xAtt = gcnew XmlAttributeAttribute;
      xAtt->AttributeName = "Code";

      /* Create an instance of the XmlAttributes class and set the 
            XmlAttribute property to the XmlAttributeAttribute object. */
      XmlAttributes^ attrs = gcnew XmlAttributes;
      attrs->XmlAttribute = xAtt;

      /* Add the XmlAttributes object to the XmlAttributeOverrides
            and specify the type and member name to override. */
      xOver->Add( Group::typeid, "GroupCode", attrs );
      XmlSerializer^ xSer = gcnew XmlSerializer( Group::typeid,xOver );
      return xSer;
   }
};
// This is the class that will be serialized.
public class Group
{
   public string GroupName;
   [XmlAttribute]
   public int GroupCode;
}

public class Sample
{
public XmlSerializer CreateOverrider()
{
   // Create an XmlAttributeOverrides object. 
   XmlAttributeOverrides xOver = new XmlAttributeOverrides();

   /* Create an XmlAttributeAttribute to override the base class
   object's XmlAttributeAttribute object. Give the overriding object
   a new attribute name ("Code"). */
   XmlAttributeAttribute xAtt = new XmlAttributeAttribute();
   xAtt.AttributeName = "Code";

   /* Create an instance of the XmlAttributes class and set the 
   XmlAttribute property to the XmlAttributeAttribute object. */
   XmlAttributes attrs = new XmlAttributes();
   attrs.XmlAttribute = xAtt;

   /* Add the XmlAttributes object to the XmlAttributeOverrides
      and specify the type and member name to override. */
   xOver.Add(typeof(Group), "GroupCode", attrs);

   XmlSerializer xSer = new XmlSerializer(typeof(Group), xOver);
   return xSer;
}
}
' This is the class that will be serialized.
Public Class Group
    Public GroupName As String
    <XmlAttribute()> Public GroupCode As Integer
End Class

Public Class Sample
    
    Public Function CreateOverrider() As XmlSerializer
        ' Create an XmlAttributeOverrides object. 
        Dim xOver As New XmlAttributeOverrides()
        
        ' Create an XmlAttributeAttribute to override the base class
        ' object's XmlAttributeAttribute object. Give the overriding object
        ' a new attribute name ("Code").
        Dim xAtt As New XmlAttributeAttribute()
        xAtt.AttributeName = "Code"
        
        ' Create an instance of the XmlAttributes class and set the
        ' XmlAttribute property to the XmlAttributeAttribute object. 
        Dim attrs As New XmlAttributes()
        attrs.XmlAttribute = xAtt
        
        ' Add the XmlAttributes object to the XmlAttributeOverrides
        ' and specify the type and member name to override. 
        xOver.Add(GetType(Group), "GroupCode", attrs)
        
        Dim xSer As New XmlSerializer(GetType(Group), xOver)
        Return xSer
    End Function
End Class

Hinweise

Die XmlAttributes Objekt enthält eine Union von Attributobjekten, die dazu führen, dass die XmlSerializer sein Standardverhalten für die Serialisierung für einen Satz von Objekten zu überschreiben.The XmlAttributes object contains a union of attribute objects that cause the XmlSerializer to override its default serialization behavior for a set of objects. Die Attributobjekte in Platzieren der XmlAttributes -Objekt, abhängig von dem bestimmten Verhalten, die Sie überschreiben möchten.You choose the attribute objects to place in the XmlAttributes object, depending on the particular behaviors you want to override. Z. B. die XmlSerializer serialisiert einen Klassenmember als XML-Element in der Standardeinstellung.For example, the XmlSerializer serializes a class member as an XML element by default. Wenn Sie die Member stattdessen als XML-Attribut serialisiert werden soll, erstellen Sie eine XmlAttributeAttribute, weisen sie Sie der XmlAttribute Eigenschaft eine XmlAttributes, und fügen die XmlAttributes -Objekt die XmlAttributeOverrides Objekt.If you want the member to be serialized as an XML attribute instead, you would create an XmlAttributeAttribute, assign it to the XmlAttribute property of an XmlAttributes, and add the XmlAttributes object to the XmlAttributeOverrides object.

Verwenden Sie diese Methode beim Überschreiben einer XmlElementAttribute, XmlAttributeAttribute, XmlArrayAttribute, XmlArrayItemAttribute, oder XmlIgnoreAttribute.Use this method when attempting to override an XmlElementAttribute, XmlAttributeAttribute, XmlArrayAttribute, XmlArrayItemAttribute, or XmlIgnoreAttribute.

Siehe auch

Gilt für: