假设我有一个静态类和一个静态方法:
public static class MyClass
{
public static void MyMethod() { }
}
我可以得到这样的MethodInfo
:
MethodInfo MethodInfo = typeof(MyClass).GetMethod("MyMethod");
但是,如果我更改了方法的名称,字符串的神奇属性将导致方法名称保持不变。如果它是非静态类/方法,我可以这样做:
public class MyClass
{
public void MyMethod() { }
}
MethodInfo MethodInfo = new Action<MyClass>(x => x.MyMethod()).Method;
这很好,因为它是对方法签名本身的引用,所以我可以更改原始方法名称,然后重命名所有引用。但是,这个方法不能与我的类/方法的静态版本一起工作。
是否有一种方法来使用lambda与静态类?
从c# 6.0开始,您可以使用nameof
操作符:
MethodInfo MethodInfo = typeof(MyClass).GetMethod(nameof(MyClass.MyMethod));