![]() |
1
191
非-
https://docs.microsoft.com/en-us/dotnet/api/system.reflection.methodbase.getcurrentmethod
请记住这一点
|
![]() |
2
127
从.NET4.5开始,您还可以使用 [CallerMemberName] . 示例:属性设置器(回答第2部分):
|
![]() |
3
48
Lex提供的代码片段有点长,所以我要指出重要的部分,因为没有其他人使用完全相同的技术:
MethodBase.GetCurrentMethod().Name 技术,但仍然值得指出,因为我可以在它自己的方法中使用索引1为 以前的
这也是一条单行线;) |
![]() |
4
18
在空控制台程序的Main方法中尝试以下操作:
控制台输出:
|
![]() |
5
12
当然可以。 如果你想操纵一个对象,我实际上使用了如下函数:
这一行:
沿着堆栈帧查找调用方法,然后使用反射获取传递给它的通用错误报告函数的参数信息值。要获得当前方法,只需使用当前堆栈帧(1)。 正如其他人所说,对于当前的方法名称,您也可以使用:
在4.5之后,您现在可以使用[CallerMemberNameAttribute]作为方法参数的一部分来获取方法名称的字符串-这在某些情况下可能会有所帮助(但实际上在上面的示例中)
这似乎主要是针对INotifyPropertyChanged支持的一种解决方案,以前在事件代码中,字符串到处都是。 |
![]() |
6
12
比较获取方法名的方法--使用 arbitrary timing construct 在LinqPad: 密码
后果反射 堆栈跟踪 内联常数 内联常数 常数 expr e=>e、 expr() exprmember exprmember 呼叫者成员 主要的
|
![]() |
7
9
编辑:MethodBase可能是一种更好的方法,可以直接获取您所在的方法(与整个调用堆栈相反)。然而,我仍然关心内联。 您可以在方法中使用StackTrace:
看看画面:
但是,请注意,如果该方法是内联的,那么您就不会在您认为自己是内联的方法中。可以使用属性来防止内联:
|
![]() |
8
7
如果系统反射包含在使用块中:
|
![]() |
9
4
这个怎么样:
|
![]() |
10
2
我认为你应该能够通过创建一个 StackTrace . 或者@ edg 及@ Lars Mæhlum 提到,MethodBase。 GetCurrentMethod () |
![]() |
11
2
输出:
|
![]() |
12
2
我只是通过一个简单的静态类实现了这一点:
然后在代码中:
|
![]() |
13
1
对于
|
![]() |
14
1
为了处理异步和普通的旧方法调用,我这样做了。
|
![]() |
15
0
试试这个。。。
|
![]() |
16
0
从2021年起为客户提供更具弹性的解决方案:
用法
|
![]() |
17
-1
|
![]() |
18
-1
将此方法添加到某个地方,然后不带参数地调用它!
|
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |