SoapIncludeAttribute クラス
アセンブリ: System.Xml (system.xml.dll 内)
構文
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Method Or AttributeTargets.Interface, AllowMultiple:=True)> _ Public Class SoapIncludeAttribute Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Method|AttributeTargets.Interface, AllowMultiple=true)] public class SoapIncludeAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Struct|AttributeTargets::Method|AttributeTargets::Interface, AllowMultiple=true)] public ref class SoapIncludeAttribute : public Attribute
SoapIncludeAttribute クラスは、XmlSerializer がオブジェクトをエンコード済み SOAP XML としてシリアル化または逆シリアル化する方法を制御する一連の属性のうちの 1 つです。結果として生成される XML は、W3C (World Wide Web Consortium) (www.w3.org) のドキュメント『Simple Object Access Protocol (SOAP) 1.1』のセクション 5 に準拠します。類似する属性の完全な一覧については、「エンコード済み SOAP シリアル化を制御する属性」を参照してください。
オブジェクトをエンコード済み SOAP メッセージとしてシリアル化するには、SoapReflectionImporter クラスの ImportTypeMapping メソッドで作成された XmlTypeMapping を使用して、XmlSerializer を構築する必要があります。
SoapIncludeAttribute を適用するときには、派生クラスの Type を指定します。XmlSerializer は、基本クラスと派生クラスの両方を含むオブジェクトをシリアル化する場合は、両方のオブジェクト型を認識できます。
Web サービス記述言語 (WSDL: Web Services Description Language) で記述されたサービスの説明ドキュメントに派生クラスを含める場合は、SoapIncludeAttribute を使用します。たとえば、メソッドが Object を返す場合は、そのメソッドに SoapIncludeAttribute を適用し、実際に返される必要がある型を指定します。
WSDL の詳細については、W3C (World Wide Web Consortium) (www.w3.org) の仕様『Web Services Description Language (WSDL) 1.1』を参照してください。
SoapIncludeAttribute を XML Web サービス メソッドに 2 回適用する例を次に示します。このメソッドは、オブジェクト型 Vehicle (基本クラス) を返します。SoapIncludeAttribute が適用されているため、このメソッドは Vehicle クラスから派生したクラスのインスタンスを返すことができます。
<%@ WebService Language="VB" Class="Test" %> Imports System Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Web.Services.Description Imports System.Xml Imports System.Xml.Schema Imports System.Xml.Serialization Imports System.Data Public Class Test : Inherits WebService <WebMethod()> Public Function EchoString( _ <XmlElement(DataType:="string")> ByVal strval As String) _ As <XmlElement("MyTime", DataType:="time")> DateTime Return DateTime.Now End Function <WebMethod(), SoapRpcMethod, SoapInclude(GetType(Car)), _ SoapInclude(GetType(Bike))> _ Public Function Vehicle (licenseNumber As string ) As Vehicle If licenseNumber = "0" Then Dim v As Vehicle = new Car() v.licenseNumber = licenseNumber return v ElseIf licenseNumber = "1" Then Dim v As Vehicle = new Bike() v.licenseNumber = licenseNumber return v else return Nothing End If End Function End Class <XmlRoot("NewVehicle")> _ public MustInherit Class Vehicle public licenseNumber As String public make As DateTime End Class public class Car Inherits Vehicle End Class public Class Bike Inherits Vehicle End Class
<%@ WebService Language="C#" Class="Test" %> using System; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Services.Description; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; using System.Data; public class Test : WebService { [WebMethod()] [return:XmlElement("MyTime", DataType="time")] public DateTime EchoString([XmlElement(DataType="string")] string strval) { return DateTime.Now; } [WebMethod()] [SoapRpcMethod] [SoapInclude(typeof(Car)), SoapInclude(typeof(Bike))] public Vehicle Vehicle(string licenseNumber) { if (licenseNumber == "0") { Vehicle v = new Car(); v.licenseNumber = licenseNumber; return v; } else if (licenseNumber == "1") { Vehicle v = new Bike(); v.licenseNumber = licenseNumber; return v; } else { return null; } } } [XmlRoot("NewVehicle")] public abstract class Vehicle { public string licenseNumber; public DateTime make; } public class Car : Vehicle { } public class Bike : Vehicle { }
<%@ WebService Language="VJ#" Class="Test" %> import System.*; import System.Web.Services.*; import System.Web.Services.Protocols.*; import System.Web.Services.Description.*; import System.Xml.*; import System.Xml.Schema.*; import System.Xml.Serialization.*; import System.Data.*; public class Test extends WebService { /** @attribute WebMethod() */ public DateTime EchoString( /** @attribute XmlElement(DataType = "string") */ String strval) { return DateTime.get_Now(); } //EchoString /** @attribute WebMethod() */ /** @attribute SoapRpcMethod() */ /** @attribute SoapInclude(Car.class) @attribute SoapInclude(Bike.class) */ public Vehicle Vehicle(String licenseNumber) { if (licenseNumber.Equals("0")) { Vehicle v = new Car(); v.licenseNumber = licenseNumber; return v; } else { if (licenseNumber.Equals("1")) { Vehicle v = new Bike(); v.licenseNumber = licenseNumber; return v; } else { return null; } } } //Vehicle } //Test /** @attribute XmlRoot("NewVehicle") */ abstract public class Vehicle { public String licenseNumber; public DateTime make; } //Vehicle public class Car extends Vehicle { } //Car public class Bike extends Vehicle { } //Bike
System.Attribute
System.Xml.Serialization.SoapIncludeAttribute
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- SoapIncludeAttribute クラスのページへのリンク