共用方式為


XmlAttributeOverrides.Add 方法

定義

將物件 XmlAttributes 加入物件集合 XmlAttributes

多載

名稱 Description
Add(Type, XmlAttributes)

將物件 XmlAttributes 加入物件集合 XmlAttributes 。 參數 type 指定一個物件要被該 XmlAttributes 物件覆蓋。

Add(Type, String, XmlAttributes)

將物件 XmlAttributes 加入物件集合 XmlAttributes 。 參數 type 指定要覆寫的物件。 參數 member 指定被覆寫的成員名稱。

Add(Type, XmlAttributes)

來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs

將物件 XmlAttributes 加入物件集合 XmlAttributes 。 參數 type 指定一個物件要被該 XmlAttributes 物件覆蓋。

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
Public Sub Add (type As Type, attributes As XmlAttributes)

參數

type
Type

被覆寫的物件。Type

attributes
XmlAttributes

一個 XmlAttributes 代表覆蓋屬性的物件。

範例

以下範例序列化了一個名為 Band的類別,該類別由一個名為 Orchestra的類別 衍生而來。 範例中建立一個 XmlRootAttribute 物件,並將其指派到 XmlRoot 物件 XmlAttributes 的屬性。 範例接著呼叫該 Add 方法,將物件加入 XmlAttributes 物件 XmlAttributeOverrides 中。

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

備註

物件 XmlAttributes 包含一組屬性物件的聯集,導致 覆蓋 XmlSerializer 其預設的序列化行為,針對一組物件。 你可以根據想要覆蓋的特定行為,選擇要放入物件 XmlAttributes 的屬性物件。 例如,預設 XmlSerializer 會將類別成員序列化為 XML 元素。 如果你想將成員序列化為 XM 屬性,你會建立一個 XmlAttributeAttribute,並將其指派到 XmlAttributeXmlAttributes屬性,然後將該物件加入 XmlAttributes 物件 XmlAttributeOverrides 中。

利用這個過載來覆蓋一個 XmlRootAttributeXmlTypeAttribute

另請參閱

適用於

Add(Type, String, XmlAttributes)

來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs
來源:
XmlAttributeOverrides.cs

將物件 XmlAttributes 加入物件集合 XmlAttributes 。 參數 type 指定要覆寫的物件。 參數 member 指定被覆寫的成員名稱。

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);
public void Add(Type type, string member, System.Xml.Serialization.XmlAttributes? attributes);
member this.Add : Type * string * System.Xml.Serialization.XmlAttributes -> unit
Public Sub Add (type As Type, member As String, attributes As XmlAttributes)

參數

type
Type

Type 覆蓋的物件。

member
String

要覆蓋的成員姓名。

attributes
XmlAttributes

一個 XmlAttributes 代表覆蓋屬性的物件。

範例

以下範例建立一個 XmlAttributeAttribute 物件,並將其指派給 XmlAttribute 物件 XmlAttributes 的屬性。 範例接著將物件 XmlAttributes 加入物件 XmlAttributeOverrides ,然後建立 XmlSerializer

// 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

備註

物件 XmlAttributes 包含一組屬性物件的聯集,導致 覆蓋 XmlSerializer 其預設的序列化行為,針對一組物件。 你可以根據想要覆蓋的特定行為,選擇要放入物件 XmlAttributes 的屬性物件。 例如,預設 XmlSerializer 會將類別成員序列化為 XML 元素。 如果你想將成員序列化為 XML 屬性,你會建立一個 XmlAttributeAttribute,將其指派到 XmlAttributeXmlAttributes屬性,然後將該物件加入 XmlAttributes 物件 XmlAttributeOverrides 中。

嘗試覆寫 XmlElementAttributeXmlAttributeAttributeXmlArrayAttributeXmlArrayItemAttributeXmlIgnoreAttribute時,使用此方法。

另請參閱

適用於