我编写了一个wcf程序,其中我有一个类库,我在其中声明了一个包含类作为参数的函数。
我在客户端程序中访问了该函数,但我不知道如何将该类传递给该函数。我会写下面的代码。
该参数的类包含属性。
[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。
答案 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; }
}
}