C# Spring表达式和可空值
我使用Spring.Core动态链接库 我的简单代码: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
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?
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");
或