Freigeben über


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