【发布时间】:2012-01-26 06:45:27
【问题描述】:
我正在尝试实现以下模式功能:
MethodInfo GetMethod(
Expression<Func<TTarget, EventHandler<TEventArgs>>> method)
如果需要,我可以提供一个 TTarget 实例
期望的用法是:
public static void Main(string[] args)
{
var methodInfo = GetMethod<Program, EventArgs>(t => t.Method);
Console.WriteLine("Hello, world!");
}
private void Method(object sender, EventArgs e)
{
}
这是我迄今为止尝试过的:
private static MethodInfo GetMethod(TTarget target, Expression<Func<TTarget, EventHandler<TEventArgs>>> method)
{
var lambda = method as LambdaExpression;
var body = lambda.Body as UnaryExpression;
var call = body.Operand as MethodCallExpression;
var mInfo = call.Method as MethodInfo;
Console.WriteLine(mInfo);
throw new NotImplementedException();
}
打印出来:
System.Delegate CreateDelegate(System.Type, System.Object, System.Reflection.Met
hodInfo)
【问题讨论】:
-
用您使用的编程语言标记问题可能会有所帮助。它看起来像 C#,但我不能确定。
标签: c# .net linq reflection expression-trees