当前位置:  开发笔记 > 编程语言 > 正文

在Expression Trees中调用实例方法的最佳方法?

如何解决《在ExpressionTrees中调用实例方法的最佳方法?》经验,为你挑选了1个好方法。

在表达式树中调用实例方法的最佳方法是什么?我目前的解决方案是接口IColumn的接口方法"对象GetRowValue(rowIndex)".

public static Expression CreateGetRowValueExpression(
    IColumn column, 
    ParameterExpression rowIndex)
        {
            MethodInfo methodInfo = column.GetType().GetMethod(
                "GetRowValue",
                BindingFlags.Instance | BindingFlags.Public,
                null,
                CallingConventions.Any,
                new[] { typeof(int) },
                null);
            var instance = Expression.Constant(column);
            return Expression.Call(instance, methodInfo, rowIndex);            
        }

有更快的方法吗?是否可以创建表达式而无需将方法名称作为字符串传递(对于重构不好)?



1> Mark Cidade..:

您可以使用辅助方法执行此操作:

MethodCallExpression GetCallExpression(Expression> e)
{
    return e.Body as MethodCallExpression;
}

/* ... */
var getRowValExpr = GetCallExpression(x => x.GetRowValue(0));

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有