猿问

你能用反射来找到当前正在执行的方法的名称吗?

你能用反射来找到当前正在执行的方法的名称吗?

就像标题所说:反射可以为您提供当前正在执行的方法的名称。

由于海森堡的问题,我倾向于不猜。如何在不改变当前方法的情况下调用一种方法来告诉您当前的方法?但是我希望有人可以在那里证明我的错。

更新:

  • 第2部分:这可以用来查看属性的内部代码吗?

  • 第3部分:性能如何?

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

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


烙印99
浏览 483回答 3
3回答

开满天机

从.NET 4.5开始,您还可以使用[CallerMemberName]示例:属性设置器(回答第2部分):&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;SetProperty<T>(T&nbsp;value,&nbsp;[CallerMemberName]&nbsp;string&nbsp;property&nbsp;=&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.propertyValues[property]&nbsp;=&nbsp;value; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnPropertyChanged(property); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;SomeProperty &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;SetProperty(value);&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}编译器将在callites中提供匹配的字符串文字,因此基本上没有性能开销。
随时随地看视频慕课网APP
我要回答