SoapIncludeAttribute-Klasse
Ermöglicht dem XmlSerializer das Erkennen eines Typs beim Serialisieren oder Deserialisieren eines Objekts als codiertes SOAP-XML.
Namespace: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)
Syntax
'Declaration
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Method Or AttributeTargets.Interface, AllowMultiple:=True)> _
Public Class SoapIncludeAttribute
Inherits Attribute
'Usage
Dim instance As SoapIncludeAttribute
[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
/** @attribute AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Method|AttributeTargets.Interface, AllowMultiple=true) */
public class SoapIncludeAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Method|AttributeTargets.Interface, AllowMultiple=true)
public class SoapIncludeAttribute extends Attribute
Hinweise
Die SoapIncludeAttribute-Klasse gehört zu einer Familie von Attributen, die das Serialisieren bzw. Deserialisieren eines Objekts als codiertes SOAP XML durch XmlSerializer steuern. Das resultierende XML entspricht Abschnitt 5 des Dokuments "Simple Object Access Protocol (SOAP) 1.1" des World Wide Web Consortium (www.w3.org). Eine vollständige Liste ähnlicher Attribute finden Sie unter Attribute für die Steuerung der Serialisierung von codiertem SOAP.
Um ein Objekt als codierte SOAP-Meldung zu serialisieren, müssen Sie den XmlSerializer mithilfe einer XmlTypeMapping erstellen, die mit der ImportTypeMapping-Methode der SoapReflectionImporter-Klasse erstellt wurde.
Geben Sie beim Anwenden von SoapIncludeAttribute den Type der abgeleiteten Klasse an. Wenn XmlSerializer Objekte serialisiert, die sowohl die Basisklasse als auch die abgeleitete Klasse umfassen, werden beide Objekttypen erkannt.
Sie können das SoapIncludeAttribute verwenden, um abgeleitete Klassen in Dienstbeschreibungsdokumente aufzunehmen, die in WSDL (Web Services Description Language) verfasst wurden. Wenn eine Methode z. B. ein Object zurückgibt, weisen Sie der Methode das SoapIncludeAttribute zu und geben die tatsächlich zurückzugebenden Typen an.
Weitere Informationen zu WSDL finden Sie in der World Wide Web Consortium-Spezifikation (www.w3.org) "Web Services Description Language (WSDL) 1.1".
Weitere Informationen über das Verwenden von Attributen finden Sie unter Erweitern von Metadaten mithilfe von Attributen.
Beispiel
Im folgenden Beispiel wird SoapIncludeAttribute einer XML-Webdienstmethode zweimal zugewiesen. Die Methode gibt ein Objekt vom Typ Vehicle
zurück (eine Basisklasse). Das SoapIncludeAttribute ermöglicht es der Methode, von der Vehicle
-Klasse abgeleitete Instanzen von Klassen zurückzugeben.
<%@ 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
Vererbungshierarchie
System.Object
System.Attribute
System.Xml.Serialization.SoapIncludeAttribute
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
SoapIncludeAttribute-Member
System.Xml.Serialization-Namespace