将类添加到WCF服务库

时间:2012-04-29 17:54:41

标签: c# wcf service

我有一个类,它定义了一个需要在两个独立的应用程序之间共享的事务。它们都引用了这个库,并且可以将该类用作数据类型,但不能调用它的任何方法:

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;
        }
    }
}

我做错了什么?

[更新]我错过了剩下的服务。

感谢。

1 个答案:

答案 0 :(得分:2)

为了从客户端和服务器使用相同的.NET类型,您需要做的是将数据协定类添加到客户端和主机使用的共享程序集中。然后,当您的主机启动并运行并执行添加服务引用时,应该有一个复选框,表示现有程序集中的重用类型。

这将使WCF重新创建您的对象以及您期望的方法和数据。