通过反射获取调用方法详情
问题:
C#中可以利用反射吗检索调用当前方法的名称和类型方法?
答案:
是的,可以的。以下是如何实现此目的的代码演示:
public class SomeClass { public void SomeMethod() { StackFrame frame = new StackFrame(1); MethodBase method = frame.GetMethod(); Type type = method.DeclaringType; string name = method.Name; } }
考虑以下附加类:
public class Caller { public void Call() { SomeClass s = new SomeClass(); s.SomeMethod(); } }
在这种情况下,变量名称和类型将分配有值“分别为“呼叫”和“呼叫者”。
.NET 更新4.5:
.NET 4.5 中引入的 CallerMemberNameAttribute 简化了此过程。在下面修改后的 SomeClass 中:
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { Console.WriteLine(memberName); // Outputs the calling method's name } }
这取代了对 StackFrame 和 GetMethod() 方法的需要。
以上是C# 反射能否显示调用方法的名称和类型?的详细内容。更多信息请关注PHP中文网其他相关文章!