This documentation is archived and is not being maintained.

SoapIncludeAttribute Class

Allows the XmlSerializer to recognize a type when it serializes or deserializes an object as encoded SOAP XML.

For a list of all members of this type, see SoapIncludeAttribute Members.


[Visual Basic]
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Struct _
   Or AttributeTargets.Method)>
Public Class SoapIncludeAttribute
   Inherits Attribute
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct |
public class SoapIncludeAttribute : Attribute
[AttributeUsage(AttributeTargets::Class | AttributeTargets::Struct
   | AttributeTargets::Method)]
public __gc class SoapIncludeAttribute : public Attribute
   AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct |
class SoapIncludeAttribute extends Attribute

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


The SoapIncludeAttribute class belongs to a family of attributes that controls how the XmlSerializer serializes, or deserializes, an object as encoded SOAP XML . The resulting XML conforms to section 5 of the World Wide Web Consortium ( document, "Simple Object Access Protocol (SOAP) 1.1". For a complete list of similar attributes, see Attributes That Control Encoded SOAP Serialization.

To serialize an object as an encoded SOAP message, you must construct the XmlSerializer using an XmlTypeMapping created with the ImportTypeMapping method of the SoapReflectionImporter class.

When applying the SoapIncludeAttribute, specify the Type of the derived class. When the XmlSerializer serializes objects that include both the base and the derived classes, it can then recognize both object types.

You can use the SoapIncludeAttribute to include derived classes in service description documents that are written in the Web Services Description Language (WSDL). For example, if a method returns an Object, apply the SoapIncludeAttribute to the method and specify the actual types that should be returned.

For more information about WSDL, see World Wide Web Consortium ( specification, "Web Services Description Language (WSDL) 1.1".

For more information about using attributes, see Extending Metadata Using Attributes.


[Visual Basic, C#] The following example applies the SoapIncludeAttribute twice to an XML Web service method. The method returns an object of type Vehicle (a base class). The SoapIncludeAttribute allows the method to return instances of classes derived from the Vehicle class.

[Visual Basic] 
<%@ 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
         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 {
   [return:XmlElement("MyTime", DataType="time")]
   public DateTime EchoString([XmlElement(DataType="string")] 
   string strval) {
        return DateTime.Now;
   [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;
public abstract class Vehicle {
    public string licenseNumber;
    public DateTime make;
public class Car : Vehicle {
public class Bike : Vehicle {

[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button Language Filter in the upper-left corner of the page.


Namespace: System.Xml.Serialization

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

Assembly: System.Xml (in System.Xml.dll)

See Also

SoapIncludeAttribute Members | System.Xml.Serialization Namespace