XmlIncludeAttribute クラス
XmlSerializer がオブジェクトをシリアル化または逆シリアル化するときに、型を認識できるようにします。
この型のすべてのメンバの一覧については、XmlIncludeAttribute メンバ を参照してください。
System.Object
System.Attribute
System.Xml.Serialization.XmlIncludeAttribute
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Struct _
Or AttributeTargets.Method)>
Public Class XmlIncludeAttribute Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct |
AttributeTargets.Method)]
public class XmlIncludeAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Class | AttributeTargets::Struct
| AttributeTargets::Method)]
public __gc class XmlIncludeAttribute : public Attribute
[JScript]
public
AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct |
AttributeTargets.Method)
class XmlIncludeAttribute extends Attribute
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
XmlSerializer クラスの Serialize メソッドまたは Deserialize メソッドを呼び出すときに、 XmlIncludeAttribute を使用します。
XmlIncludeAttribute を適用するときには、派生クラスの Type を指定します。 XmlSerializer は、基本クラスと派生クラスの両方を含むオブジェクトをシリアル化する場合は、両方のオブジェクト型を認識できます。
Web サービス記述言語 (WSDL: Web Services Description Language) で記述されたサービスの説明ドキュメントに派生クラスを含める場合は、 XmlIncludeAttribute を使用します。たとえば、メソッドが Object を返す場合は、そのメソッドに XmlIncludeAttribute を適用し、実際に返される必要がある型を指定します。
WSDL の詳細については、W3C のサイト (www.w3.org) で『Web Services Description Language (WSDL) 1.1』を参照してください。
使用例
[C#] 3 つのクラスがあり、そのうち 2 つのクラスが 3 番目のクラスから継承したクラスである例を次に示します。この例では、1 つの派生クラスのインスタンスを返すメソッドに XmlIncludeAttribute を適用します。
<%@ 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()]
[XmlInclude(typeof(Car)), XmlInclude(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 {
}
[Visual Basic, C++, JScript] Visual Basic、C++、および JScript のサンプルはありません。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 内)
参照
XmlIncludeAttribute メンバ | System.Xml.Serialization 名前空間 | XmlSerializer | XML シリアル化の概要 | XML シリアル化のオーバーライド | XmlAttributes | 属性を使用した XML シリアル化の制御 | XML シリアル化の例