如何在<Action> .NET 中创建给定完全限定类名和方法名的表达式?



我需要创建一个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()();

最新更新