XMLを返すメソッドを持つASMX Webサービスがあります。ジェネリックオブジェクトを使用してWebサービスメソッドからデータを返しますか?
サービスは、様々な異なるオブジェクトを返し、私は、例えば、要求に関する情報が含まれているラッパー・オブジェクトを作成しました:
[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; }
}
私は別のタイプで私の第二の方法を定義してまで、今、これが正常に動作します。私がしようとすると 参照の異なるタイプ MyProject.Web.webservices「http://tempuri.org/」名前空間からASMXテストページ
トップXML要素の応答 'をロードするときそして、私はこのエラーを取得します。 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つの型として扱いますが、同じ名前空間に同じルート要素を持ちます。