在客户端程序 WCF C# 中将 class 作为函数参数传递
Pass class as a function parameter in client program WCF C#
我编写了一个 wcf 程序,其中有一个 class 库,我在其中声明了包含 class 作为参数的函数。
我在客户端程序中访问了该函数,但我不知道如何将 class 传递给该函数。我将在下面编写代码。
- 我有一个包含基本函数声明的接口
- 在 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; }
}
}
如果你这样做然后重新生成你的服务客户端,你会发现你可以从你的调用代码访问汽车类型,你不需要在客户端定义你自己的类型。
我编写了一个 wcf 程序,其中有一个 class 库,我在其中声明了包含 class 作为参数的函数。
我在客户端程序中访问了该函数,但我不知道如何将 class 传递给该函数。我将在下面编写代码。
- 我有一个包含基本函数声明的接口
- 在 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; }
}
}
如果你这样做然后重新生成你的服务客户端,你会发现你可以从你的调用代码访问汽车类型,你不需要在客户端定义你自己的类型。