如何创建表达式<;操作>;给定.NET中的完全限定类名和方法名
本文关键字:方法 NET gt 创建 何创建 表达式 操作 lt 给定 | 更新日期: 2023-09-27 18:25:19
我需要创建一个Expression<Action>
,它表示调用类上的方法。
作为输入,我有一个描述程序集和类名(标准完全限定类名)的字符串,以及另一个定义要调用的方法的字符串。
要调用的类/方法实际上在必须创建表达式的代码中不可用,所以我不能只写()=>MyClass.Invoke();
——我没有MyClass
的程序集作为引用。
System.Action act = () =>
{
var typeName = "";
var methodName = "";
var type = System.Type.GetType(typeName);
var method = type.GetMethod(methodName);
object[] constructorArgs = null;
var obj = type.InvokeMember(null, System.Reflection.BindingFlags.CreateInstance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance, null, null, constructorArgs);
object [] methodArgs = null;
method.Invoke(obj, methodArgs);
};
System.Linq.Expressions.Expression<System.Action> exp = () => act();
exp.Compile()();