HuB*_*eZa 7 .net c# reflection anonymous-methods
public static void Main(string[] args)
{
Action a = () => Console.WriteLine(MethodInfo.GetCurrentMethod().Name);
a();
}
Run Code Online (Sandbox Code Playgroud)
这段代码将返回一个不起眼的字符串,如下所示:<Main>b__0.
有没有办法忽略匿名方法并获得更易读的方法名称?
不,没有.这就是为什么它是一种匿名方法.该名称由编译器自动生成,并保证是唯一的.如果要获取调用方法名称,可以将其作为参数传递:
public static void Main()
{
Action<string> a = name => Console.WriteLine(name);
a(MethodInfo.GetCurrentMethod().Name);
}
Run Code Online (Sandbox Code Playgroud)
或者如果你真的想要一个有意义的名字,你需要提供它:
public static void Main()
{
Action a = MeaningfullyNamedMethod;
a();
}
static void MeaningfullyNamedMethod()
{
Console.WriteLine(MethodInfo.GetCurrentMethod().Name);
}
Run Code Online (Sandbox Code Playgroud)
你可以在外面捕获它:
var name = MethodInfo.GetCurrentMethod().Name + ":subname";
Action a = () => Console.WriteLine(name);
Run Code Online (Sandbox Code Playgroud)
除此之外; 没有.
| 归档时间: |
|
| 查看次数: |
4121 次 |
| 最近记录: |