Учитывая (надуманный) базовый класс и подкласс, который мы хотим сериализовать через WCF с помощью XmlSerializer. Мы украшаем коллекцию (см. Класс ответа) согласно статье:XmlSerializer + Polymorphism
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute.aspx (см. Раздел замечаний).
Проблема заключается в том, что, хотя кажется, что создается правильный WSDL, SVCUtil создает файл класса, в котором класс GetUserResponse содержит свойство с именем Items. Это связано с применением [XmlElement] к массиву? Хотя элемент XmlArray не имеет свойства Type.
Заранее спасибо.
[Serializable]
[XmlType]
public class UserBase
{
public int Id {get;set;}
}
[Serializable]
[XmlType]
public class BasicUser : UserBase
{
public string UserName {get;set;}
}
[Serializable]
[XmlType]
public class SuperUser : UserBase
{
public string UserName {get;set;}
public bool SpecialLevel {get;set;}
}
[Serializable]
[XmlType]
public class GetUserResponse
{
[XmlElement("Users", typeof(User)), XmlElement("SuperUsers", typeof(SuperUser))]
public List<UserBase> Users {get;set;}
}
Зачем вам нужен XmlSerializer? Почему бы просто не использовать Serializer Data Contract Serializer, который быстрее и гибче? – 2010-11-23 20:12:56
btw, `[Serializable]` ничего здесь не добавляет, если вы также не используете `BinaryFormatter`. – 2010-11-23 20:15:34