英語で読む

次の方法で共有


SoapEnumAttribute クラス

定義

XmlSerializer が列挙体メンバーをシリアル化する方法を制御します。

C#
[System.AttributeUsage(System.AttributeTargets.Field)]
public class SoapEnumAttribute : Attribute
継承
SoapEnumAttribute
属性

次の例では、という名前FoodTypeXmlSerializer列挙型を含むクラスFoodをシリアル化するために使用します。 列挙体はFoodType、各列挙型を作成し、SoapEnumAttributea SoapAttributes SoapEnumAttributeのプロパティを SoapEnum . をSoapAttributes作成XmlSerializerするためにSoapAttributeOverrides使用される a に追加されます。

C#
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

public class Group{
   public string GroupName;
   public GroupType Grouptype;
}

public enum GroupType{
   // Use the SoapEnumAttribute to instruct the XmlSerializer
   // to generate Small and Large instead of A and B.
   [SoapEnum("Small")]
   A,
   [SoapEnum("Large")]
   B
}

public class Run {
   static void Main(){
      Run test= new Run();
      test.SerializeObject("SoapEnum.xml");
      test.SerializeOverride("SoapOverride.xml");
      Console.WriteLine("Fininished writing two files");
   }

     private void SerializeObject(string filename){
      // Create an instance of the XmlSerializer Class.
      XmlTypeMapping mapp  =
      (new SoapReflectionImporter()).ImportTypeMapping(typeof(Group));
      XmlSerializer mySerializer =  new XmlSerializer(mapp);

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

      // Create an instance of the Class that will be serialized.
      Group myGroup = new Group();

      // Set the object properties.
      myGroup.GroupName = ".NET";
      myGroup.Grouptype= GroupType.A;

      // Serialize the Class, and close the TextWriter.
      mySerializer.Serialize(writer, myGroup);
       writer.Close();
   }

   private void SerializeOverride(string fileName){
      SoapAttributeOverrides soapOver = new SoapAttributeOverrides();
      SoapAttributes SoapAtts = new SoapAttributes();

      // Add a SoapEnumAttribute for the GroupType.A enumerator.
      // Instead of 'A'  it will be "West".
      SoapEnumAttribute soapEnum = new SoapEnumAttribute("West");
      // Override the "A" enumerator.
      SoapAtts.SoapEnum = soapEnum;
      soapOver.Add(typeof(GroupType), "A", SoapAtts);

      // Add another SoapEnumAttribute for the GroupType.B enumerator.
      // Instead of //B// it will be "East".
      SoapAtts= new SoapAttributes();
      soapEnum = new SoapEnumAttribute();
      soapEnum.Name = "East";
      SoapAtts.SoapEnum = soapEnum;
      soapOver.Add(typeof(GroupType), "B", SoapAtts);

      // Create an XmlSerializer used for overriding.
      XmlTypeMapping map =
      new SoapReflectionImporter(soapOver).
      ImportTypeMapping(typeof(Group));
      XmlSerializer ser = new XmlSerializer(map);
      Group myGroup = new Group();
      myGroup.GroupName = ".NET";
      myGroup.Grouptype = GroupType.B;
      // Writing the file requires a TextWriter.
      TextWriter writer = new StreamWriter(fileName);
      ser.Serialize(writer, myGroup);
      writer.Close();
    }
}

注釈

このクラスは SoapEnumAttribute 、オブジェクトをエンコードされた SOAP XML としてシリアル化または逆シリアル化する方法 XmlSerializer を制御する属性のファミリに属します。 結果の XML は、World Wide Web Consortium ドキュメント Simple Object Access Protocol (SOAP) 1.1 のセクション 5 に準拠しています。 類似する属性の完全な一覧については、「 エンコードされた SOAP シリアル化を制御する属性」を参照してください。

オブジェクトをエンコードされた SOAP メッセージとしてシリアル化するには、クラスのメソッドで作成したXmlSerializerオブジェクトをXmlTypeMapping使用して構築するSoapReflectionImporter必要ImportTypeMappingがあります。

SoapEnumAttributeを使用して、生成または認識する列挙体をXmlSerializer変更します (それぞれクラスをシリアル化または逆シリアル化する場合)。 たとえば、列挙型に名前付きのメンバーが含まれているが、XML 出力の名前One``Singleを付ける場合は、列挙メンバーに適用SoapEnumAttributeし、プロパティを Name "Single" に設定します。

クラスのインスタンスをName作成し、クラスのSoapEnumAttributeプロパティに割り当てることで、a のSoapEnumAttributeプロパティSoapAttributes値をSoapEnumオーバーライドできます。 詳細については、クラスの概要を SoapAttributeOverrides 参照してください。

オブジェクトをエンコードされた SOAP メッセージとしてシリアル化するには、クラスのメソッドで作成したXmlSerializerオブジェクトをXmlTypeMapping使用して構築するSoapReflectionImporter必要ImportTypeMappingがあります。

注意

長いSoapEnumAttribute単語の代わりに、コード内の単語SoapEnumを使用できます。

属性の使用の詳細については、「 属性」を参照してください。

コンストラクター

SoapEnumAttribute()

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

SoapEnumAttribute(String)

要素名を指定して、SoapEnumAttribute クラスの新しいインスタンスを初期化します。

プロパティ

Name

XmlSerializer が列挙体をシリアル化する場合は XML ドキュメントに生成された値を、列挙体メンバーを逆シリアル化する場合には認識した値を、取得または設定します。

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。

(継承元 Attribute)

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

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

一連の名前を対応する一連のディスパッチ識別子に割り当てます。

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。

(継承元 Attribute)

適用対象

製品 バージョン
.NET 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