2

我正在尝试使用一个不错的近对象设置器,但有空问题。

我现在的代码:

var Result = new RefundReplyObject
{
    AuthorisationNumber = reply.refundResponse.transactionDetails.authorisationNumber,
    ChargeValue = reply.refundResponse.transactionDetails.totalAmount.amount, 
    Message = reply.refundResponse.transactionDetails.message,
    ReconciliationReference = reply.refundResponse.transactionDetails.reconciliationReference,
    SettlementDate = reply.refundResponse.transactionDetails.settlementDate,
    Status = TransactionStatusToLocalModel(reply.refundResponse.transactionDetails.status),
    TransactionReference = reply.refundResponse.transactionDetails.transactionReference
};

但是...“totalAmount”可能为空。所以,我得到错误。

有没有一种巧妙的方法来处理这个问题,如果“totalAmount”为空,那么将chargevalue设置为零?

4

5 回答 5

3

三元运算符如何检查总金额是否为空。如果不是,则使用 it's amount,否则为 0。

ChargeValue = (reply.refundResponse.transactionDetails.totalAmount != null) ? reply.refundResponse.transactionDetails.totalAmount.amount : 0,
于 2013-01-23T23:28:02.067 回答
2

你可以这样做,例如:

ChargeValue = reply.refundResponse.transactionDetails.totalAmount != null ? reply.refundResponse.transactionDetails.totalAmount.amount : 0
于 2013-01-23T23:27:54.840 回答
1

三元运算符来救援!

ChargeValue = totalAmount ? totalAmount.amount : 0;

于 2013-01-23T23:29:13.240 回答
0

像这样的东西?

ChargeValue = (null == reply.refundResponse.transactionDetails.totalAmount) 
    ? 0
    : reply.refundResponse.transactionDetails.totalAmount.amount
于 2013-01-23T23:27:58.670 回答
0

您将无法在事情的二传手方面做到这一点,因为在您到达那里之前就发生了异常。您可以通过执行以下操作来获得您所追求的(并在此过程中大量清理您的代码):

var trans = reply.refundResponse.transactionDetails;

var Result = new RefundReplyObject
{
    AuthorisationNumber = trans.authorisationNumber,
    ChargeValue = trans.totalAmount == null ? 0 : trans.totalAmount.amount, 
    Message = trans.message,
    ReconciliationReference = trans.reconciliationReference,
    SettlementDate = trans.settlementDate,
    Status = TransactionStatusToLocalModeltrans.status),
    TransactionReference = trans.transactionReference
};
于 2013-01-23T23:30:11.480 回答