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

在客户端程序WCF C中将类作为函数参数传递#,wcf,class,object,Wcf,Class,Object,我已经编写了一个wcf程序,其中有一个类库,我在其中声明了包含一个类作为参数的函数 我在客户端程序中访问了该函数,但我不知道如何将该类传递给该函数。我将在下面编写代码 我有一个包含基本函数声明的接口 在类库中有另一个类,它正在实现接口。该接口包含一个将类作为参数的方法 作为参数的类包含属性 [ServiceContract] public interface ICarDetails { [OperationContract] string updateCarDetails(Car

我已经编写了一个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

    不能传递类,必须传递该类的对象。创建新对象:

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

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

    OP的问题不是他们不了解如何实例化类型的实例,但是他们在调用代码中无法使用所讨论的类型。在您的解决方案中,不会定义Car。您的答案仍然无法提供解决方案。OP将如何访问该车型?另外,你的答案的前几行没有提到这个问题。大家好,谢谢你的建议。这里我的主要目的是如何将类或对象作为参数传递。我需要添加数据协定。Xaruth理解得很好。我做的很好。谢谢Xaruth。