osc*_*tin 1 .net reflection lambda expression
假设我有一个带有静态方法的静态类:
public static class MyClass
{
public static void MyMethod() { }
}
Run Code Online (Sandbox Code Playgroud)
我可以得到MethodInfo这样的:
MethodInfo MethodInfo = typeof(MyClass).GetMethod("MyMethod");
但是,如果我更改了方法的名称,字符串的神奇属性将导致方法名称保持不变。如果它是非静态类/方法,我可以这样做:
public class MyClass
{
public void MyMethod() { }
}
Run Code Online (Sandbox Code Playgroud)
MethodInfo MethodInfo = new Action<MyClass>(x => x.MyMethod()).Method;
这很棒,因为它是对方法签名本身的引用,因此我可以更改原始方法名称,然后重命名所有引用。但是,此方法不适用于我的类/方法的静态版本。
有没有办法将 lambda 与静态类一起使用?
从 C# 6.0 开始,您可以使用nameof运算符来实现此目的:
MethodInfo MethodInfo = typeof(MyClass).GetMethod(nameof(MyClass.MyMethod));
Run Code Online (Sandbox Code Playgroud)