【发布时间】:2018-01-19 15:18:02
【问题描述】:
我有一个名为“User”的类,它有一个定义为“Department”类的属性(我也想知道它叫什么,哈哈)。我想访问名为“Name”(User.Department.Name)的“Department”类中的属性。当我将参数输入到编译的表达式中时,它会抛出 NulLReferenceException。
我在下面有这段代码。提前致谢。
ParameterExpression paramExpr = Expression.Parameter(typeof(User), "user");
MemberExpression depPropExpr = MemberExpression.Property(paramExpr, "Department");
MemberExpression depNamePropExpr = MemberExpression.Property(depPropExpr, "Name");
ConstantExpression constantExpression = Expression.Constant("SBCA");
var expression = Expression.Assign(depNamePropExpr, constantExpression); var compiledExpression = Expression.Lambda<Action<User>>(expression, new[] { paramExpr }).Compile();
compiledExpression(user);
【问题讨论】:
-
你的代码有什么问题?
-
编写代码,就像不用表达式一样。然后构建表达式树。
-
当我编译它时它会抛出一个 NullReferenceException。 var compiledExpression = Expression.Lambda
>(expression, new[] { paramExpr }).Compile();编译表达式(用户); -
你是怎么编译的?你如何使用它? Edit您的问题并包括所有相关部分
-
谢谢,我会深入研究的。
标签: c# expression-trees