2

素敵なニア オブジェクト セッターを使用しようとしていますが、null の問題があります。

私のコードは今:

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' は null の可能性があります。だから、私はエラーが発生します。

「totalAmount」がnullの場合、chargevalueをゼロに設定するように、これを処理するきちんとした方法はありますか?

4

5 に答える 5

3

合計金額が null かどうかを確認する三項演算子はどうですか。そうでない場合は 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 に答える