C# Spring表达式和可空值

C# Spring表达式和可空值,c#,.net,spring.net,C#,.net,Spring.net,我使用Spring.Core动态链接库 我的简单代码: public void ComputedFields() { var finance = new Finance(); ExpressionEvaluator .SetValue( finance, "FieldToBeSet", ExpressionEvaluator .GetValue( finance, "SomeNul

我使用Spring.Core动态链接库

我的简单代码:

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

  Assert.AreEqual(finance.FieldToBeSet, 1);
} 
引发以下异常:

具有指定数量和类型参数的方法
GetValueOrDefault


Finance
是一个简单的poco
SomeNullableFinanceField
字段的类型为
decimal?
Spring.net ExpressionEvaluator不知道.net Nullable类型,因此它不会尝试查找和调用GetValueOrDefault方法,因为SomeNullableFinanceField为null

如果SomeNullableFinanceField不为null,它将尝试对SomeNullableFinanceField值(十进制)调用GetValueOrDefault

您应该修改您的表达式:

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


Spring.net ExpressionEvaluator不知道.net可为null的类型,因此它不会尝试查找并调用GetValuerDefault方法,因为某些NullableFinanceField为null

如果SomeNullableFinanceField不为null,它将尝试对SomeNullableFinanceField值(十进制)调用GetValueOrDefault

您应该修改您的表达式:

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