【问题标题】:CallerMemberName equivalence in netstandard网络标准中的 CallerMemberName 等效项
【发布时间】:2017-08-22 04:59:08
【问题描述】:

在 .NET Framework 中,函数可以通过属性 [CallerFilePath]、[CallerMemberName]、[CallerLineNumber] 获取调用者的方法/文件/行号。在 netstandard 中,这不受支持。与此等价的是什么?有没有办法做到这一点?

我会很高兴该函数可以获取调用者数据而无需调用者直接传递它们,就像我如何使用属性一样。

【问题讨论】:

  • 目前netstandard似乎支持这些属性。

标签: c# .net-standard


【解决方案1】:

您可以使用StackTrace 类。它允许您以帧列表的形式跟踪有关执行的信息。 Frame 0 是您当前的元素,因此您的目标帧索引为 1,如果它当然存在,例如

StackTrace st = new StackTrace(true);
var frame = st.GetFrame(1);
var method = frame.GetMethod();
var file = frame.GetFileName();
var line = frame.GetFileLineNumber();

检查该类的其他方法

【讨论】:

  • 由于这是在运行时评估的,我们需要访问堆栈帧,请记住,与属性相比,这要昂贵得多!
猜你喜欢
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2015-12-28
  • 2010-10-08
  • 1970-01-01
相关资源
最近更新 更多