【发布时间】:2011-03-19 19:53:55
【问题描述】:
是否可以从操作中获取方法名称?我知道我总是可以传递一个字符串,但我希望有一些更聪明的东西。
public bool DeviceCommand(Action apiCall)
{
//It would be nice to log the method name that was passed in
try
{
apiCall();
}
catch (Exception exc)
{
LogException(exc);
return false;
}
return true;
}
用法如下:
void MyMethod()
(
DeviceCommand(() => api.WriteConfig(config));
)
【问题讨论】:
-
这是一个LINQ表达式,你认为应该报告什么?如果是
DeviceCommand(() => (standard ? api.WriteConfig(config) : api.WriteExtendedConfig(config)));应该是什么@ -
你是说不传递某种参数就不可能完成我想要的,因为它是一个 LINQ 表达式?
-
不,只是指出仅仅因为您的示例很简单,一般问题并不是因为 Action 可能是各种各样的东西,包括任何合格的代码块。我可能不会记录调用,但只要确保在出现异常时包含堆栈跟踪即可。或者,如果您想跟踪调用,只需在每个方法中记录调用。