如何将复杂对象传递给WCF
问题描述:
我正在使用Visual Studio 2010和.NET 4.0。我创建了一个Web方法,我试图用复杂对象(类的类对象)作为参数调用它,但它引发错误“对象引用未设置为对象的实例”。请帮助我如何纠正它。 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; }
}
客户端调用如下:
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);
}
答
在amount.Rate.ExRate = "1255";
你想要的值分配给哪个尚未初始化属性(Rate
)线。因此,您不能分配其属性ExRate
。
为了使这项工作,你必须初始化Rate
第一:
amount.Rate = new ExchangeRate();
amount.Rate.ExRate = "1255";
或合并的初始化和赋值:
amount.Rate = new ExchangeRate { ExRate = "1255" };
嗨,这是工作。非常感谢。 – sithuwin
不客气。 – khlr