谁能解释下面这段代码?

liusahara 2011-08-04 08:51:39
        public string GetFullFunName()
{
MethodBase mb = new System.Diagnostics.StackTrace().GetFrame(1).GetMethod();
string name = mb.Name;
string[] full = mb.DeclaringType.FullName.Split('.');
return full[full.Length-1] + "." + name;
}
...全文
108 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdzcool 2011-08-05
  • 打赏
  • 举报
回复
这个不是取文件名的吗?
liusahara 2011-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cloudhsu 的回复:]
MethodBase mb = new System.Diagnostics.StackTrace().GetFrame(0).GetMethod();
会取得现在的方法
MethodBase mb = new System.Diagnostics.StackTrace().GetFrame(1).GetMethod();
调用现在的方法的方法

C# code

public s……
[/Quote]
谢谢!
云瑀 2011-08-05
  • 打赏
  • 举报
回复
MethodBase mb = new System.Diagnostics.StackTrace().GetFrame(0).GetMethod();
会取得现在的方法
MethodBase mb = new System.Diagnostics.StackTrace().GetFrame(1).GetMethod();
调用现在的方法的方法
 public string GetFullFunName()
{
MethodBase mb = new System.Diagnostics.StackTrace().GetFrame(1).GetMethod();
string name = mb.Name;
string[] full = mb.DeclaringType.FullName.Split('.');
return full[full.Length-1] + "." + name;
}

也就是说0的话会永远取得GetFullName()
改成1的话,看是在哪个方法中呼叫GetFullName(),就会取得该方法名
A()
{
GetFullName();
}
会取得A()
B()
{
GetFullName();
}
会取得B()
longbin891012 2011-08-05
  • 打赏
  • 举报
回复
获取文件夹下面的文件
liusahara 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zetee 的回复:]
public string myNameFunction()
{
string str= GetFullFunName();//“myNameFunction”
}
获取本方法的方法名字符串。

原理:获取调用堆栈中的方法。
[/Quote]
能不能讲解详细些,还是不明白怎么就获取了本方法名的字符串?
zetee 2011-08-04
  • 打赏
  • 举报
回复
public string myNameFunction()
{
string str= GetFullFunName();//“myNameFunction”
}
获取本方法的方法名字符串。

原理:获取调用堆栈中的方法。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧