小编典典

能不能用反射来找到当前正在执行的方法的名字?

all

就像标题说的:反射能否给你当前正在执行的方法的名称。

由于海森堡问题,我倾向于猜测不是。你如何调用一个方法来告诉你当前的方法而不改变当前的方法是什么?但我希望有人能证明我错了。

更新:

  • 第 2 部分:这也可以用来查看属性的内部代码吗?
  • 第 3 部分:表演会是什么样的?

最终结果
我了解了 MethodBase.GetCurrentMethod()。我还了解到,我不仅可以创建堆栈跟踪,还可以根据需要只创建我需要的确切帧。

要在属性中使用它,只需使用 .Substring(4) 删除“set_”或“get_”。


阅读 70

收藏
2022-06-24

共1个答案

小编典典

从 .NET 4.5 开始,您还可以使用[CallerMemberName]

示例:属性设置器(回答第 2 部分):

protected void SetProperty<T>(T value, [CallerMemberName] string property = null)
{
    this.propertyValues[property] = value;
    OnPropertyChanged(property);
}

public string SomeProperty
{
    set { SetProperty(value); }
}

编译器将在调用站点提供匹配的字符串文字,因此基本上没有性能开销。

2022-06-24