2016-10-01 5 views
1

Я работаю с Visual Studio 2010 и .NET 4.0. Я создал один веб-метод, и я пытаюсь назвать его сложным объектом (объект класса класса) в качестве параметра, но он вызывает ошибку «Ссылка на объект не установлена ​​в экземпляр объекта». Пожалуйста, помогите мне, как исправить это. WCF, как показано ниже:Как передать сложный объект 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 вызова, как показано ниже:

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

ответ

0

В строке amount.Rate.ExRate = "1255"; вы пытаетесь присвоить значение свойству (Rate), которая еще не инициализирован. Следовательно, вы не можете назначить свое свойство ExRate.

Чтобы сделать эту работу, вам придется инициализировать Rate первый:

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

Или объединить инициализацию и назначение:

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

Привет, это работает. Большое спасибо. – sithuwin

+0

Добро пожаловать. – khlr

Смежные вопросы