User u = new User();
var method = u.GetType().GetMethod("Methods");
var type1 = method.GetParameters()[0].ParameterType;
var parameter1 = Expression.Parameter(type1, "pr1");
var type2 = method.GetParameters()[1].ParameterType;
var parameter2 = Expression.Parameter(type2, "pr2");
var callExpression = Expression.Call(Expression.Constant(u), method, new Expression[] { parameter1, parameter2 });
Expression<Action<string, int>> scall = Expression.Lambda<Action<string, int>>(callExpression, new ParameterExpression[] { parameter1, parameter2 });
var executeMethods = scall.Compile();
executeMethods("1", 1);
u.Methods("ddd", 3);public class User
{
public void Methods(string name,int age)
{
Console.WriteLine(name+"-----"+age+s);
}
}这几天学习看了资料 利用表达式树反射?
感觉这样写好麻烦啊?有帮忙优化一下的 或者改进的吗?
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1976/viewspace-3155739/ ,如需转载,请注明出处,否则将追究法律责任。