この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

XmlAttributeOverrides クラス

 

公開日: 2016年10月

使用する際に、プロパティ、フィールド、およびクラスの属性を上書きすることができます、 XmlSerializer オブジェクトを逆シリアル化または逆シリアル化します。

名前空間:   System.Xml.Serialization
アセンブリ:  System.Xml (System.Xml.dll 内)

System.Object
  System.Xml.Serialization.XmlAttributeOverrides

public class XmlAttributeOverrides

名前説明
System_CAPS_pubmethodXmlAttributeOverrides()

XmlAttributeOverrides クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_pubpropertyItem[Type]

指定すると、基底クラスの種類に関連付けられたオブジェクトを取得します。

System_CAPS_pubpropertyItem[Type, String]

(基底クラス) の指定した型に関連付けられているオブジェクトを取得します。 メンバーのパラメーターでは、オーバーライドされる基本クラスのメンバーを指定します。

名前説明
System_CAPS_pubmethodAdd(Type, String, XmlAttributes)

追加、 XmlAttributes オブジェクトのコレクションを XmlAttributes オブジェクトです。 type パラメーターを上書きするオブジェクトを指定します。 member パラメーターがオーバーライドされるメンバーの名前を指定します。

System_CAPS_pubmethodAdd(Type, XmlAttributes)

追加、 XmlAttributes オブジェクトのコレクションを XmlAttributes オブジェクトです。 type パラメーター オブジェクトで上書きするための指定、 XmlAttributes オブジェクトです。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。(Object から継承されます。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。(Object から継承されます。)

XmlAttributeOverrides により、 XmlSerializer を一連のオブジェクトのシリアル化の既定の方法をオーバーライドします。 2 つの用途を持つこの方法でシリアル化をオーバーライドします最初に、制御し、DLL の場合--内で見つかったオブジェクトのシリアル化の強化、ソースにアクセスできない場合でも。次に、シリアル化可能なクラスの 1 つのセットを作成するが、複数の方法でオブジェクトをシリアル化します。 たとえば、XML 要素としてのクラスのインスタンスのメンバーをシリアル化するのではなくシリアル化できますに XML 属性として効率の高いドキュメントでその結果、トランスポートにします。

作成した後、 XmlAttributeOverrides オブジェクトへの引数として渡す、 XmlSerializer コンス トラクターです。 結果の XmlSerializer に含まれるデータを使用して、 XmlAttributeOverrides オブジェクトをシリアル化する方法を制御する属性をオーバーライドします。 これを実現する、 XmlAttributeOverrides がオーバーライドされると、オブジェクトの種類のコレクションを格納だけでなく、 XmlAttributes オーバーライドされたオブジェクトの種類ごとに関連付けられているオブジェクト。 XmlAttributes オブジェクト自体には、各フィールド、プロパティ、またはクラスがシリアル化される方法を制御する属性のオブジェクトの適切なセットが含まれています。

プロセスの作成および使用するため、 XmlAttributeOverrides オブジェクトは、次のようにします。

  1. 作成、 XmlAttributes オブジェクトです。

  2. オーバーライドされているオブジェクトに適した属性オブジェクトを作成します。 たとえば、フィールドまたはプロパティをオーバーライドする次のように作成します。、 XmlElementAttribute, 、new、を使用して派生型です。 割り当てることができます必要に応じて新しい ElementName, 、または Namespace 、基本クラスの属性の名前または名前空間をオーバーライドします。

  3. 適切な属性オブジェクトを追加 XmlAttributes プロパティ、またはコレクション。 たとえば、追加すると、 XmlElementAttribute に、 XmlElements のコレクション、 XmlAttributes オーバーライドされるメンバー名を指定するオブジェクト。

  4. 作成、 XmlAttributeOverrides オブジェクトです。

  5. 使用して、 Add メソッドを追加、 XmlAttributes オブジェクトを XmlAttributeOverrides オブジェクトです。 オーバーライドされているオブジェクトの場合、 XmlRootAttribute または XmlTypeAttribute, 、オーバーライドされたオブジェクトの種類を指定するだけで済みます。 フィールドまたはプロパティをオーバーライドする場合もオーバーライドされるメンバーの名前を指定する必要があります。

  6. 構築するときに、 XmlSerializer, 、渡す、 XmlAttributeOverrides に、 XmlSerializer コンス トラクターです。

  7. その結果を使用する XmlSerializer と派生クラス オブジェクトを逆シリアル化します。

次の例は、という名前のクラスをシリアル化 Orchestra, 、という名前の単一のフィールドを格納する Instruments の配列を返す Instrument オブジェクトです。 2 番目のクラスが名前付き Brass から継承、 Instrument クラスです。 この例のインスタンスを使用して、 XmlAttributeOverrides をオーバーライドするクラス、 Instrument フィールドになり、フィールドを受け入れるように、 Brass オブジェクトです。

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)
    {
      /* Each overridden field, property, or type requires 
      an XmlAttributes object. */
      XmlAttributes attrs = new XmlAttributes();

      /* Create an XmlElementAttribute to override the 
      field that returns Instrument objects. The overridden field
      returns Brass objects instead. */
      XmlElementAttribute attr = new XmlElementAttribute();
      attr.ElementName = "Brass";
      attr.Type = typeof(Brass);

      // Add the element to the collection of elements.
      attrs.XmlElements.Add(attr);

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

      /* Add the type of the class that contains the overridden 
      member and the XmlAttributes to override it with to the 
      XmlAttributeOverrides object. */
      attrOverrides.Add(typeof(Orchestra), "Instruments", 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 that will be serialized.
      Orchestra band = new Orchestra();

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

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

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

      // Create an XmlElementAttribute to override the Instrument.
      XmlElementAttribute attr = new XmlElementAttribute();
      attr.ElementName = "Brass";
      attr.Type = typeof(Brass);

      // Add the XmlElementAttribute to the collection of objects.
      attrs.XmlElements.Add(attr);

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

      // Create 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:");

      /* The difference between deserializing the overridden 
      XML document and serializing it is this: To read the derived 
      object values, you must 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);
      }
   }
}

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: