[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method)] |
When applying the XmlIncludeAttribute, specify the Type of the derived class. When the XmlSerializer serializes objects that include both the base and the derived class, it can then recognize both object types.
You can use the XmlIncludeAttribute 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 XmlIncludeAttribute to the method and specify the actual types that should be returned.
For more information on the WSDL, see "Web Services Description Language (WSDL) 1.1" at www.w3.org .
<%@ 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 { }
ctor #1 | Initializes a new instance of the XmlIncludeAttribute class. |
Type | Read-write Gets or sets the type of the object to include. |
TypeId (inherited from System.Attribute) |
Read-only See base class member description: System.Attribute.TypeId When implemented in a derived class, gets a unique identifier for this Attribute. |
Equals (inherited from System.Object) |
See base class member description: System.Object.Equals Derived from System.Object, the primary base class for all objects. |
GetHashCode (inherited from System.Attribute) |
See base class member description: System.Attribute.GetHashCode Returns the hash code for this instance. |
GetType (inherited from System.Object) |
See base class member description: System.Object.GetType Derived from System.Object, the primary base class for all objects. |
IsDefaultAttribute (inherited from System.Attribute) |
See base class member description: System.Attribute.IsDefaultAttribute When overridden in a derived class, returns an indication whether the value of this instance is the default value for the derived class. |
Match (inherited from System.Attribute) |
See base class member description: System.Attribute.Match When overridden in a derived class, returns a value indicating whether this instance equals a specified object. |
ToString (inherited from System.Object) |
See base class member description: System.Object.ToString Derived from System.Object, the primary base class for all objects. |
Finalize (inherited from System.Object) |
See base class member description: System.Object.Finalize Derived from System.Object, the primary base class for all objects. |
MemberwiseClone (inherited from System.Object) |
See base class member description: System.Object.MemberwiseClone Derived from System.Object, the primary base class for all objects. |
Hierarchy:
public XmlIncludeAttribute( |
type
public class Vehicle{} public class Car:Vehicle{} public class Truck:Vehicle{} public class Sample { [WebMethodAttribute] [XmlInclude(typeof(Car))] [XmlInclude(typeof(Truck))] public Vehicle ReturnVehicle(int i){ if(i == 0) return new Car(); else return new Truck(); } }
public Type Type {get; set;}
|
using System; using System.IO; using System.Xml.Serialization; public class Group { public Employee[] Employees; } // Instruct the XmlSerializer to accept Manager types as well. [XmlInclude(typeof(Manager))] public class Employee { public string Name; } public class Manager:Employee { public int Level; } public class Run { public static void Main() { Run test = new Run(); test.SerializeObject("IncludeExample.xml"); test.DeserializeObject("IncludeExample.xml"); } public void SerializeObject(string filename) { XmlSerializer s = new XmlSerializer(typeof(Group)); TextWriter writer = new StreamWriter(filename); Group group = new Group(); Manager manager = new Manager(); Employee emp1 = new Employee(); Employee emp2 = new Employee(); manager.Name = "Zeus"; manager.Level = 2; emp1.Name = "Ares"; emp2.Name = "Artemis"; Employee [] emps = new Employee[3]{manager, emp1, emp2}; group.Employees = emps; s.Serialize(writer, group); writer.Close(); } public void DeserializeObject(string filename) { FileStream fs = new FileStream(filename, FileMode.Open); XmlSerializer x = new XmlSerializer(typeof(Group)); Group g = (Group) x.Deserialize(fs); Console.Write("Members:"); foreach(Employee e in g.Employees) { Console.WriteLine("\t" + e.Name); } } }
public virtual object TypeId {get;}
|
~XmlIncludeAttribute(); |
public override int GetHashCode(); |
public Type GetType(); |
public virtual bool IsDefaultAttribute(); |
The implementation of this method in a derived class compares the value of this instance to a standard, default value obtained by some means, then returns a Boolean value that indicates whether the value of this instance is equal to the standard. The standard value is typically coded as a constant in the implementation, or stored programmatically in a field used by the implementation.
obj
protected object MemberwiseClone(); |
public virtual string ToString(); |