将类作为函数参数传递给客户端程序WCF C#

时间:2015-04-01 14:13:55

标签: wcf class object

我编写了一个wcf程序,其中我有一个类库,我在其中声明了一个包含类作为参数的函数。

我在客户端程序中访问了该函数,但我不知道如何将该类传递给该函数。我会写下面的代码。

  1. 我有一个包含基本功能声明的界面
  2. 在类库中还有另一个实现接口的类。该接口包含一个以类为参数的方法。
  3. 该参数的类包含属性。

    [ServiceContract]
    public interface ICarDetails
    {
        [OperationContract]
        string updateCarDetails(Car c);
    }
    
    public class CarDetails : ICarDetails
    {
        public string updateCarDetails(Car c)
        {
            //some operations and initilizations
            string example = Car.carno = "1234";
            return "success";
        }
    }
    
    Public class Car
    {
        private string carno;
        private string carModel;
    
        public string CARNO
        {
            get{ return carno; }
            set{ carno = value; }
    
        }
    
        public string CARMODEL
        {
            get{ return carModel; }
            set{ carModel = value; }
        }
    }
    

    3)我将在我使用的myclient程序中访问此功能。消费时我需要发一个课吗?如果是这样,我该如何发送课程。

    class Program
    {
        static void Main(string[] args)
        {
            CarDetailsserviceClient client = new CarDetailsserviceClient();
            string abc = client.updateCarDetails(); // This shows error
        }
    }
    
    public class carclient
    {
        public string carno = "6789";
    }
    

    我想将此客户端类carclient发送到wcf服务函数updatecardetails。

2 个答案:

答案 0 :(得分:0)

您需要使用DataContract and DataMember属性标记您的Car类型,然后才能将其传递到服务边界:

[DataContract]
public class Car
{
    private string carno;
    private string carModel;

    [DataMember]
    public string CARNO
    {
        get{ return carno; }
        set{ carno = value; }

    }

    [DataMember]
    public string CARMODEL
    {
        get{ return carModel; }
        set{ carModel = value; }
    }
}

如果你这样做然后重新生成你的服务客户端,你会发现你可以通过调用代码访问Car类型,而不需要在客户端定义你自己的类型。

答案 1 :(得分:-1)

您无法传递类,您必须传递该类的对象。创建新对象:

Car carclient = new Car() { CARNO = "6789" };

然后,在论证中传递它:

string abc = client.updateCarDetails(carclient);

Car必须包含在DataContract中,如下所示:

[DataContract]
public class Car
{
    private String carno;
    private String carModel;

    [DataMember]
    public String CARNO
    {
        get { return this.carno; }
        set { this.carno = value; }
    }

    [DataMember]
    public String CARMODEL
    {
        get { return this.carModel; }
        set { this.carModel = value; }
    }
}