У меня есть веб-сервис ASMX с рядом методов, которые возвратят XML.Использование общего объекта для возврата данных из метода webservice?
Служба возвращает различные различные объекты, и я создал объект-оболочку, которая содержит информацию о запросе: например
[Serializable]
[XmlRoot("response")]
public class DtoWrapper<T>
{
[XmlElement("error")]
public bool Error { get; set; }
[XmlElement("error_message")]
public string ErrorMessage { get; set; }
[XmlElement("success")]
public bool Success { get; set; }
[XmlElement("friendly_message")]
public string FriendlyMessage { get; set; }
[XmlArray("result")]
[XmlArrayItem("item")]
public List<T> Payload { get; set; }
}
Теперь это работает отлично, пока я не определен мой второй метод с другим типом. Тогда я получаю эту ошибку, когда я пытаюсь загрузить тестовую страницу ASMX
Верхний элемент «» ответ XML из пространства имен «http://tempuri.org/» ссылок различных типов MyProject.Web.webservices. DtoWrapper
1[MyProject.BusinessLogic.ClassA] and MyProject.Web.webservices.DtoWrapper
1 [MyProject.BusinessLogic.ClassB]. Используйте атрибуты XML для указания другого XML-имя или пространство имен для элемента или типов.
Я попытался маркировки моих объектов с [XmlType(Namespace="com.temp.A")]
и [XmlType(Namespace="com.temp.B")]
, но это, кажется, не поможет.
Любые идеи? Должен ли я создать объект-оболочку для каждого типа, который я хочу использовать?
EDIT: Я понял, что это не те аргументы типа, которые являются проблемой. Это факт, что тег [XmlRoot] указан в классе. Сериализатор рассматривает их как 2 типа, но они имеют один и тот же корневой элемент в одном и том же пространстве имен.