2015-04-01 17 views
0

我已經寫了一個wcf程序,其中我有一個類庫,我聲明瞭包含類作爲參數的函數。在客戶端程序WCF中傳遞類作爲函數參數C#

我在客戶端程序中訪問該函數,但我不知道如何將該類傳遞給該函數。我會寫下面的代碼。

  1. 我有一個包含基本函數聲明
  2. 類庫中還有另一種是實現該接口的類的接口。該接口包含一個將類作爲參數的方法。

該參數的類包含屬性。

[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。

回答

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

OP的問題不在於他們不知道如何實例化某個類型的實例,而是在調用代碼中他們沒有提供該類型的問題。在你的解決方案中,Car不會被定義。 – 2015-04-01 15:58:46

+0

編輯:添加datacontract – Xaruth 2015-04-01 16:31:41

+0

您的答案仍然不提供解決方案。 OP如何獲得車型?另外,您的答案的前幾行不解決問題。 – 2015-04-01 18:25:38

0

您需要標記您的汽車類型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; } 
    } 
} 

如果你這樣做,然後重新生成你的服務客戶端,你會發現你可以從你的調用代碼訪問汽車類型,你不需要在客戶端定義你自己的類型。

相關問題