1

私のクラスは、次の構造で返される Web サービスを呼び出します

    [DataContract]
    public class ResponseClassContainer
    {
        [DataMember]
        public ResponseClass d { get; set; }
    }

    [DataContract]
    public class ResponseClass
    {
        [DataMember]
        public int ResponseCode { get; set; }

        [DataMember]
        public string ResponseMessage { get; set; }

        [DataMember]
        public object Response { get; set; }
    }

返された json が {"d":{....}} を返すため、コンテナーが必要です。

サービスが成功を返した場合、オブジェクト Response は、シリアル化された json として呼び出されたオブジェクトで満たされます。

問題は public オブジェクトの Response です。それはオブジェクトなので、ほとんど何でもかまいませんが、タイプが foo であると明示的に言わなければならないことがわかりました

[DataMember]
public foo Response {get;set;}

クラスの山全体を逆シリアル化できるので、できる方法はありますか

[DataMember]
public T Response {get;set;} 
4

1 に答える 1

0

あなたが持つことができます

[DataMember]
public BaseResponse Response { get; set; }

BaseResponse は次のようなクラスです

[DataContract]
[KnownType(typeof(Child1))]
[KnownType(typeof(Child2))]
public class BaseResponse

および Child1/Child2 は次のようなクラスです

[DataContract]
public class Child1 :  BaseResponse
于 2013-11-08T16:16:40.680 に答える