【发布时间】:2014-02-09 10:06:06
【问题描述】:
private void Method1()
{
//Do something
Log("Something","Method1");
}
private void Method2()
{
//Do something
Log("Something","Method2");
}
private void Log(string message, string method)
{
//Write to a log file
Trace.TraceInformation(message + "happened at " + method);
}
我有几种方法,例如上面的 Method1 和 Method2,我想通过某种方式将方法的名称作为参数传递,而无需手动编辑代码。
这可能吗?
【问题讨论】:
-
有一个名为
CallerMemberNameAttribute的新属性(我认为在 4.5 中并且需要最新的编译器),它正是这样做的,但在编译时使用字符串文字。或者,您可以使用 linq 表达式并查询表达式本身的名称,这通常用于INotifyPropertyChanged等属性。 -
您可以使用反射而不是传递方法名称
标签: c# methods parameter-passing