【发布时间】:2021-08-20 10:06:36
【问题描述】:
我有一个评估表达式的方法:
static T GetFromDynamicExpression<T>(string expression, object entity) where T : class
{
ParameterExpression itParameter = Expression.Parameter(entity.GetType());
LambdaExpression lambdaExpression = DynamicExpression.ParseLambda(new[] { itParameter }, typeof(object), expression);
var classDelegate = lambdaExpression.Compile();
return classDelegate.DynamicInvoke(entity) as T;
}
我有两个班级:
public class Student
{
public Address Address { get; set; }
}
public class Address
{
public string Name { get; set; }
}
我正在使用该方法,例如:
var student = new Student() { };
string expression = "Address.Name";
var result = GetFromDynamicExpression<string>(expression, student);
在这种情况下,它会抛出异常:
NullReferenceException:对象引用未设置为对象的实例。
这是因为学生的地址为空。现在,我希望我的表达式检查是否为空。当 Address 为 null 时,它应该返回 null(或 T 的默认值)。我该怎么做?
【问题讨论】: