7

OperationContract の入力パラメーターとしてインターフェイスを使用しています。しかし、クライアント側でプロキシ クラスを生成すると。ITransaction インターフェイスを実装するインターフェイスまたはクラスのメンバーにアクセスできません。私はオブジェクトです

  1. サービス インターフェイス

    [ServiceContract]
    public interface IServiceInterface
    {
    [OperationContract]
    string SyncDatabase(ITransaction TransactionObject);
    }
    
  2. サービスクラス

    class SyncService:IServiceInterface
    {
    
        public string SyncDatabase(ITransaction TransactionObject)
        {
        return "Hello There!!";    
        }
    }
    
  3. インターフェース

    public interface ITransaction
    {
        ExpenseData ExpData { get; set; }
        void Add(ITransaction transactionObject);
    }
    
  4. データ契約

    [DataContract]
    public class Transaction:ITransaction
    {
        [DataMember]
        public ExpenseData ExpData
        {
            get;
            set;
        }
    
        public void Add(ITransaction transactionObject)
        {
    
        }
    
     }
    

上記の場合、クライアントの iTransaction クラスとインターフェイスもコピーする必要があります

4

3 に答える 3

2

を使用し[KnownType(typeof(testClass))]ます。

次のリンクを参照してください。

于 2012-07-05T13:21:50.130 に答える
0

インターフェイスを にしてみて[DataContract]、属性を使用して[KnownType]、そのインターフェイスの既知の実装が何であるかを WCF に伝えます。

[DataContract]
[KnownType(typeof(Transaction))]
public interface ITransaction
{
    [DataMember]
    ExpenseData ExpData { get; set; }
    void Add(ITransaction transactionObject);
}
于 2012-07-05T16:15:54.297 に答える