1

ExpressionEvaluatorで Spring.Core dll を使用します 。

私の簡単なコード:

public void ComputedFields()
{
  var finance = new Finance();
  ExpressionEvaluator
    .SetValue(
      finance, 
      "FieldToBeSet", 
      ExpressionEvaluator
        .GetValue(
          finance, 
          "SomeNullableFinanceField.GetValueOrDefault(1)"));

  Assert.AreEqual(finance.FieldToBeSet, 1);
} 

次の例外が発生します。

指定された数と型の引数を持つメソッドGetValueOrDefaultが存在しません。

Finance単純な pocoSomeNullableFinanceFieldフィールドは型ですdecimal?

4

1 に答える 1

1

Spring.net ExpressionEvaluatorは.netNullable型を認識しないため、SomeNullableFinanceFieldがnullであるため、GetValueOrDefaultメソッドを見つけて呼び出そうとはしません。

SomeNullableFinanceFieldがnullでない場合、SomeNullableFinanceField値(10進数)でGetValueOrDefaultを呼び出そうとします。

式を変更する必要があります。

ExpressionEvaluator
    .GetValue(
      finance, 
      "SomeNullableFinanceField != null ? SomeNullableFinanceField : 1");

また

ExpressionEvaluator
    .GetValue(
      finance, 
      "{SomeNullableFinanceField, 1}.nonNull()[0]");
于 2013-03-15T15:41:12.097 に答える