如何从Action委托创建MethodInfo

Mic*_*ows 10 .net c# reflection nunit-addins

我正在尝试开发一个NUnit插件,它可以从包含Action委托列表的对象动态地将测试方法添加到套件中.问题在于NUnit似乎非常倾向于反思以完成工作.因此,看起来没有简单的方法可以将我的Actions直接添加到套件中.

相反,我必须添加MethodInfo对象.这通常有效,但Action代表是匿名的,所以我必须构建完成此任务的类型和方法.我需要找到一种更简单的方法来做到这一点,而无需使用Emit.有谁知道如何从Action代理轻松创建MethodInfo实例?

Fed*_*ede 14

你试过Action的Method属性吗?我的意思是:

MethodInfo GetMI(Action a)
{
    return a.Method;
}
Run Code Online (Sandbox Code Playgroud)


Tho*_*que 5

您无需“创建” a MethodInfo,只需从委托中检索它即可:

Action action = () => Console.WriteLine("Hello world !");
MethodInfo method = action.Method
Run Code Online (Sandbox Code Playgroud)

  • +1,您和费德都有正确答案。我接受了他,因为和他的代表少两位数的家伙平局。:) (2认同)