基础知识,就怕你不会……千万别不会!

高彬 2012-09-03 03:53:10

有 A 和 B 两个类,B类中有一个方法叫M1()。
假如我在A类的一个方法里调用B类中的M1方法,怎么在M1方法里写代码才能获取到当前调用它的类名或方法名?

...全文
442 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
高彬 2012-09-04
  • 打赏
  • 举报
回复
根据大家的思路与代码,总算是弄出来了。
zhanglong19891129 2012-09-03
  • 打赏
  • 举报
回复
把B 类写成静态类,,然后在A中B.M1();这个是最简单的
sunkever 2012-09-03
  • 打赏
  • 举报
回复
其实 有点不懂
youzelin 2012-09-03
  • 打赏
  • 举报
回复

class A
{
public C c = new C();
public void CallM1Method()
{
c.M1();
}
}
class B
{
public C c = new C();
public void CallM1Method()
{
c.M1();
}
}
class C
{
public void M1()
{
// 获取到底是 A 调用的还是 B 调用的
Type aType = typeof(A);
Type bType = typeof(B);
StackTrace trace = new StackTrace();
StackFrame[] frames = trace.GetFrames();

foreach (StackFrame frame in frames)
{
Type t = frame.GetMethod().DeclaringType;
if (t == aType)
{
Console.WriteLine("A invoke");
break;
}
if (t == bType)
{
Console.WriteLine("B invoke");
break;
}
}

}
}
zhujiazhi 2012-09-03
  • 打赏
  • 举报
回复
StackTrace stackTrace = new StackTrace();
StackFrame stackFrame0 = stackTrace.GetFrame(0);
Console.WriteLine(stackFrame0.GetMethod().Name);//当前方法名
StackFrame stackFrame1 = stackTrace.GetFrame(1);
Console.WriteLine(stackFrame1.GetMethod().Name);//调用这个方法的方法名
  • 打赏
  • 举报
回复
这就像系统添加日志一样,每一处增删改都要记录日志,想要得到日志的详细信息,那么就在调用的时候传递参数,我觉得并没有什么不好,只不过方法多几个重载而已.
高彬 2012-09-03
  • 打赏
  • 举报
回复
调用这个方法的类很多,如果每此调用 都传一个参数过去,代码太不优雅了。
高彬 2012-09-03
  • 打赏
  • 举报
回复
调用M1方法的太多,如果每个都要写的话很麻烦的。
scjypzh 2012-09-03
  • 打赏
  • 举报
回复
请看下StackTrace对象。获取当前方法调用的堆栈信息,里面的内容足够满足你了。
scjypzh 2012-09-03
  • 打赏
  • 举报
回复
获取当前调用的堆栈,里面有足够多的信息来满足你。
z6646339001 2012-09-03
  • 打赏
  • 举报
回复
我想问下,本来你都是通过A里面的方法调用B里面的方法,就是说,你知道是哪个类。哪个方法调用的,为什么还要在被调用的类里面获得呢?如果有用,你就直接把类名和方法名当作参数传过去啊
该用户很帅 2012-09-03
  • 打赏
  • 举报
回复
真不会 哈哈
shizhu820228 2012-09-03
  • 打赏
  • 举报
回复
A 类调B的时候,在B类里填个构造方法不行吗
public B(A a)
在A类中
B b = new B(a) 调用。
summer_yang 2012-09-03
  • 打赏
  • 举报
回复
把A的类名或方法名当参数传给B行不~

110,538

社区成员

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

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

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