Java中用表达式数调用的实例代码-创新互联
小编给大家分享一下Java中用表达式数调用的实例代码,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
利用表达式树构建委托改善反射性能 做了一点小更改正好适合自己用
public static class DynamicMethodBuilder {public static Delegate BuildDynamicDelegate(MethodInfo methodInfo, ConstructorInfo constructorInfo = null) {if (methodInfo == null)throw new ArgumentNullException("methodInfo"); ListparamExpressions = methodInfo.GetParameters().Select((p, i) =>{var name = "param" + (i + 1);return Expression.Parameter(p.ParameterType, name); }).ToList(); MethodCallExpression callExpression;if (methodInfo.IsStatic) {//Call(params....)callExpression = Expression.Call(methodInfo, paramExpressions); }else{if (constructorInfo != null) {//Instance(params).Call(params....)List constructorParamExpressions = constructorInfo.GetParameters().Select((p, i) =>{var name = "constparam" + (i + 1);return Expression.Parameter(p.ParameterType, name); }).ToList(); callExpression = Expression.Call(Expression.New(constructorInfo, constructorParamExpressions), methodInfo, paramExpressions); paramExpressions.InsertRange(0, constructorParamExpressions); }else{ callExpression = Expression.Call(Expression.New(methodInfo.ReflectedType), methodInfo, paramExpressions); } }return Expression.Lambda(callExpression, paramExpressions).Compile(); } }
网页标题:Java中用表达式数调用的实例代码-创新互联
分享URL:http://tyjierui.cn/article/ceghgs.html