0

2つの別々のアプリケーション間で共有する必要があるトランザクションを定義するクラスがあります。どちらもこのライブラリへの参照を持ち、クラスをデータ型として使用できますが、そのメソッドを呼び出すことはできません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using ServerLibrary.MarketService;

namespace ServerLibrary
{
    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        [OperationContract]
        bool ProcessTransaction(Transaction transaction);
    }

    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }

    // Transaction class to encapsulate products and checkout data
    [DataContract]
    public class Transaction
    {
        [DataMember]
        public int checkoutID;
        [DataMember]
        public DateTime time;
        [DataMember]
        public List<Product> products;
        [DataMember]
        public double totalPrice;
        [DataMember]
        public bool complete;

        public void Start(int ID)
        {
            checkoutID = ID;
            products = new List<Product>();
            complete = false;
        }

        public void Complete()
        {
            time = DateTime.Now;
            complete = true;
        }
    }
}

私は何が間違っているのですか?

[更新]残りのサービスを逃しました。

ありがとう。

4

1 に答える 1

2

クライアントとサーバーの両方から同じ.NETタイプを使用するには、クライアントとホストの両方が使用する共有アセンブリにデータコントラクトクラスを追加する必要があります。次に、ホストが稼働していて、サービス参照の追加を行うと、既存のアセンブリのタイプを再利用することを示すチェックボックスが表示されます。

これにより、WCFはオブジェクトを再作成し、期待するメソッドとデータを使用します。

于 2012-04-29T18:13:10.003 に答える