在客户端程序 WCF C# 中将 class 作为函数参数传递

Pass class as a function parameter in client program WCF C#

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

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

  1. 我有一个包含基本函数声明的接口
  2. 在 class 库中还有另一个 class 它正在实现接口。该接口包含一个以 class 作为参数的方法。

作为参数的 class 包含属性。

[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 对吗?如果是这样,我该如何发送 class。

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

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

您不能传递 class,您必须传递那个 class 的对象。创建新对象:

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

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

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

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