根据用户输入,我动态地组合了一个“Expression”。现在,我需要区分这个表达式是可写的还是不可写的。可写表达式的示例是引用具有setter的属性的属性表达式。非可写表达式的示例是对方法的调用。
当试图将值分配给不可写表达式时,“Expressions”库会引发一个“ArgumentExpression”。因此,目前我有:
当试图将值分配给不可写表达式时,“Expressions”库会引发一个“ArgumentExpression”。因此,目前我有:
try
{
assign = Expression.Assign(prop2, prop1);
}
catch (ArgumentException)
{
...
}
由于各种原因,这段代码并不是最优秀的。我想知道是否有更好的方法。
Expression.Assign
的源代码。你会看到一个名为 'RequiresCanWrite' 的方法。请参见 https://github.com/dotnet/corefx/blob/master/src/System.Linq.Expressions/src/System/Linq/Expressions/Expression.cs#L308 - Ian Mercer