架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 24281|回复: 2

[资料] .NET/C# 特性之 CallerMemberName、CallerFilePath、CallerLineNumber

[复制链接]
发表于 2021-8-11 09:45:56 | 显示全部楼层 |阅读模式
在.Net 4.5中引入了三个Attribute:CallerMemberName、CallerFilePath和CallerLineNumber 。在编译器的配合下,分别可以获取到调用函数(准确讲应该是成员)名称,调用文件及调用行号。

文档:https://docs.microsoft.com/en-us ... membernameattribute

使用 StackTrace 和 StackFrame 对象也可以获取的到,只是有了该特性后我们可以更方便的获取了。

StackTrace:表示一个堆栈跟踪,它是一个或多个堆栈帧的有序集合。

StackFrame:提供关于 StackFrame(表示当前线程的调用堆栈中的一个函数调用)的信息。

之前使用 AOP 方式通过 StackTrace 获取调用者的方法名,代码如下:


使用特性,测试代码如下:

效果图:

QQ截图20210811094451.jpg

(完)




上一篇:Maven updatePolicy 快照更新策略
下一篇:【转】Java byte[] 和 InputStream 相互转换
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-11-27 21:09:56 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-11-27 22:35:47 | 显示全部楼层
从异步函数获取当前方法名称?

超链接登录可见。

C# 5 添加了呼叫者信息属性,这可能会为您提供更多您正在寻找的内容。请注意,这些在编译时将适当的信息插入调用站点,而不是使用运行时信息。功能更有限(显然您无法获得完整的调用堆栈),但速度要快得多。

屏幕截图 2022-11-27 223513.jpg



码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-6-9 14:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表