2016-10-01 1 views
1

Ich arbeite mit Visual Studio 2010 und .NET 4.0. Ich habe eine Webmethode erstellt und versuche sie mit einem komplexen Objekt (Klassenobjekt der Klasse) als Parameter aufzurufen, aber es wird der Fehler "Objektreferenz nicht auf eine Instanz eines Objekts gesetzt" gesetzt. Bitte hilf mir, es zu korrigieren. WCF ist als unten:So übergeben Sie komplexe Objekte an WCF

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    void DoWork(); 

    [OperationContract] 
    void RedirectDeposit(string TransactionId, Amount amount); 
} 

public class Service : IService 
{ 
    public void DoWork() 
    { 

    } 

    public void RedirectDeposit(string TransactionId, Amount amount) 
    { 
     string transactionId = ""; 
     string tranAmount = ""; 
     string tranCurrency = ""; 
     string exchangeRate = ""; 

     try 
     { 
      transactionId = TransactionId; 
      tranAmount = amount.Amt; 
      tranCurrency = amount.Currency; 
      exchangeRate = amount.Rate.ExRate; 
     } 
     catch (Exception ex) 
     { 
      Utility.LogMsg("Amount : " + ex.Message); 
     } 

    } 
} 

[DataContract] 
public class Amount 
{ 
    [DataMember] 
    public string Amt { get; set; } 
    [DataMember] 
    public string Currency {get; set; } 
    [DataMember] 
    public ExchangeRate Rate { get; set; } 

} 

[DataContract] 
public class ExchangeRate 
{ 
    [DataMember] 
    public string ExRate { get; set; } 

} 

Client-Aufruf ist wie folgt:

playtechsrv.ServiceClient service = new ServiceClient(); 
Amount amount = new Amount(); 

try 
{ 
     // Put user code to initialize the page here 
     amount.Amt = "10"; 
     amount.Currency = "USD"; 
     amount.Rate.ExRate = "1255"; // Error happen here 

} 
catch (Exception ex) 
{ 
     Utility.LogMsg(ex.Source); 
} 

Antwort

0

In der Zeile amount.Rate.ExRate = "1255"; Sie versuchen, einen Wert auf eine Eigenschaft (Rate) zuzuordnen, die noch nicht initialisiert ist. Daher können Sie seine Eigenschaft ExRate nicht zuweisen.

amount.Rate = new ExchangeRate(); 
amount.Rate.ExRate = "1255"; 

Oder kombinieren Sie die Initialisierung und Zuordnung:

Um diese Arbeit zu machen, werden Sie Rate zuerst initialisieren müssen

amount.Rate = new ExchangeRate { ExRate = "1255" }; 
+0

Hallo, es funktioniert. Danke vielmals. – sithuwin

+0

Gern geschehen. – khlr

Verwandte Themen