You can actually avoid using both reflection and lambdas (.NET Framework 2.0). Consider the following class:
public class methodof
{
private MethodInfo method;
public methodof(T func)
{
Delegate del = (Delegate)(object)func;
this.method = del.Method;
}
public static implicit operator methodof(T methodof)
{
return new methodof(methodof);
}
public static implicit operator MethodInfo(methodof methodof)
{
return methodof.method;
}
}
and it's usage:
MethodInfo writeln = (methodof)Console.WriteLine;
MethodInfo parse = (methodof>)int.Parse;