0

WCF でサブクラスを転送する際に少し問題があります。一般的な「フィードバック」クラスを作成し、フィードバックからサブクラス化したいと思います:成功クラスと失敗クラス (失敗にはエラーコードと説明があります)。これにより、クライアントは次のようなことができるようになります。

If (myWCFclient.authenticate(user, password) is Succes)
{
..
}

私の WCF データ契約では、次のように定義しました。

[DataContract]
public class Feedback : IFeedback
{ 
}

[DataContract]
public class Succes : Feedback
{
}

[DataContract]
public class Failure : Feedback
{
    [DataMember]
    public int errorCode { get; set; }
    [DataMember]
    public String description { get; set; }
}

これは非常にうまく機能します。私の操作契約は次のようになります。

[OperationContract]
Feedback Authenticate(String email, String password);

しかし、これらのクラスを受け取る「クライアント」アプリケーションでは、クラスとして「フィードバック」しか見つかりません。「成功」と「失敗」はどこにもありません。

ここに画像の説明を入力

私が間違っていることを誰かが知っていますか?これらの「成功」および「失敗」クラスは、「フィードバック」をサブクラス化しているため、DataContracts で異なるものとして定義する必要がありますか?

前もって感謝します。

4

2 に答える 2

5

これを解決するにはいくつかの方法があります。次の方法があなたに最適だと思います。

[DataContract]    
[KnownType(typeof(Success))]
[KnownType(typeof(Failure))]
public class Feedback : IFeedback
{ 
}

MSDNリファレンスも参照してください

于 2013-03-13T19:20:11.183 に答える