2

IIdentityから継承するWCFインターフェイスの一部としてデータコントラクトがあります。

 [DataContract]
 public class AuthenticationIdentity : IIdentity
 {
    //implements IIdentity...
 }

このサービスは、AuthenticationIdentityオブジェクトを正常に返します。ただし、クライアントで明らかなキャストを実行しようとすると、次のようになります。

AuthenticationIdentity aId = client.GetID();
IIdentity id = aId;

AuthenticationIdentityをIIdentityにキャストできないという苦情があります。私はServiceKnownTypesをインターフェースに追加しようとしました:

[ServiceKnownType(typeof(AuthenticationIdentity))]
[ServiceKnownType(typeof(IIdentity))]

しかし、それでも運はありません。何か案は?

4

1 に答える 1

3

ワイヤの両側を制御する場合 ( にキャストしたいのでそうするように見えます)、共有アセンブリからIIdentityを参照できます。次に、svcutil を使用して、サービスとコンシューマーの間でDataContract を共有DataContractできます。または、svcutil を完全に削除したい場合は、共有アセンブリを使用する独自のプロキシを作成できます。

于 2010-06-02T17:23:24.423 に答える