Ich habe einen ASMX-Webservice mit einer Reihe von Methoden, die XML zurückgeben.Verwenden eines generischen Objekts, um Daten von einer Webservice-Methode zurückzugeben?
Der Dienst gibt verschiedene Objekte und ich habe ein Wrapper-Objekt erstellt, die Informationen über die Anforderung beispiel enthält:
[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; }
}
nun das funktioniert gut, bis ich meine zweite Methode mit einer anderen Art definiert. Dann bekomme ich diesen Fehler, wenn ich versuche, und laden Sie die ASMX Testseite
Die Top-XML-Element ‚Antwort‘ aus Namespace ‚http://tempuri.org/‘ Referenzen verschiedene Typen MyProject.Web.webservices. DtoWrapper
1[MyProject.BusinessLogic.ClassA] and MyProject.Web.webservices.DtoWrapper
1 [MyProject.BusinessLogic.ClassB]. Verwenden Sie XML-Attribute, um einen anderen XML-Namen oder -Namespace für das Element oder Typen anzugeben.
Ich habe meine Objekte versucht Markierung nach oben mit [XmlType(Namespace="com.temp.A")]
und [XmlType(Namespace="com.temp.B")]
aber es scheint nicht zu helfen.
Irgendwelche Ideen? Muss ich ein Wrapper-Objekt für jeden Typ erstellen, den ich verwenden möchte?
BEARBEITEN: Ich habe festgestellt, dass es nicht die Art Argumente ist, die das Problem sind. Es ist die Tatsache, dass das Tag [XmlRoot] in der Klasse angegeben ist. Der Serializer behandelt sie als 2 Typen, aber sie haben dasselbe Wurzelelement im selben Namespace.