SoapIncludeAttribute クラス
XmlSerializer がオブジェクトをエンコード済みの SOAP XML としてシリアル化または逆シリアル化するときに、型を認識できるようにします。
この型のすべてのメンバの一覧については、SoapIncludeAttribute メンバ を参照してください。
System.Object
System.Attribute
System.Xml.Serialization.SoapIncludeAttribute
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Struct _
Or AttributeTargets.Method)>
Public Class SoapIncludeAttribute Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct |
AttributeTargets.Method)]
public class SoapIncludeAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Class | AttributeTargets::Struct
| AttributeTargets::Method)]
public __gc class SoapIncludeAttribute : public Attribute
[JScript]
public
AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct |
AttributeTargets.Method)
class SoapIncludeAttribute extends Attribute
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
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』を参照してください。
属性の使用方法については、「 属性を使用したメタデータの拡張 」を参照してください。
使用例
[Visual Basic, C#] 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
[C#]
<%@ 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 {
}
[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Xml.Serialization
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: System.Xml (System.Xml.dll 内)