就像标题说的:反射能否给你当前正在执行的方法的名称。
由于海森堡问题,我倾向于猜测不是。你如何调用一个方法来告诉你当前的方法而不改变当前的方法是什么?但我希望有人能证明我错了。
更新:
最终结果 我了解了 MethodBase.GetCurrentMethod()。我还了解到,我不仅可以创建堆栈跟踪,还可以根据需要只创建我需要的确切帧。
要在属性中使用它,只需使用 .Substring(4) 删除“set_”或“get_”。
从 .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); } }
编译器将在调用站点提供匹配的字符串文字,因此基本上没有性能开销。