0

私は WCF クライアントを持っており、エンドポイントは新しいメソッド (OperationContract) でアップグレードされました。この新しいメソッドからの応答と、エンドポイントの既存のメソッドからの応答を処理する共通のメソッドを作成したいと考えています。

「ベース」応答クラスを作成し、WCF エンドポイントによって提供される共通プロパティを追加しようとしていますが、ハンドラ メソッドでプロパティが保持されていないことに気付きました。

すべての応答を継承するクラスのコードは次のようになります。

public class ResponseBase
{
    public string[] ItemsReturned;
    public bool ItemsWereAvailable;

}

そこで、これをエンドポイントのオブジェクトに取得するために部分的な宣言を追加します。

public partial class RetrieveResponse :ResponseBase
{
}

public partial class RetrieveResponse2 :ResponseBase
{
}

このようにして、「ResponseBase」を入力として受け入れるだけのハンドラー メソッドがあります。私はこれをすべて間違っていますか?

4

1 に答える 1

1

インスタンスが戻り値および/または操作コントラクトのパラメーターになるクラスは、DataContract属性およびプロパティでDataMembersとして装飾する必要があります。

[DataContract]
public class ResponseBase
{
    [DataMember]
    public string[] ItemsReturned { get; set; }

    [DataMember]
    public bool ItemsWereAvailable { get; set; }

}

http://msdn.microsoft.com/en-us/library/ms733127.aspx

そうでない場合、DataContractSerializerはそれらをシリアル化しません。

于 2012-08-03T15:10:38.477 に答える