Ram*_*feh 3 c# mef stack-trace silverlight-5.0
我们有一个"logger"类,它具有获取日志消息的log方法,并将消息和调用方法写入日志,首先我们还要将以下内容发送给log方法新参数Method.Base.GetCurrentMethod().我找到了另一种方法,使用Relection.MethodBase:
public void Log(string message)
{
stackTrace = new StackTrace();
string methodName = stackTrace.GetFrame(1).GetMethod().Name;
....
}
Run Code Online (Sandbox Code Playgroud)
但我有一个问题,每次调用log方法,我都被迫创建新实例StackTrace,当我尝试在构造函数中创建实例时,我得到方法名称InvokeMethod.
我们在项目中使用MEF.任何想法如何改进代码?
如果您使用的是最新版本的C#(5),则会通过call-site属性将其内置到语言中.你会像这样使用它:
public void Log(string message, [CallerMemberName] string methodName = null)
{
}
Run Code Online (Sandbox Code Playgroud)
您在不提供第二个参数的情况下调用该方法,C#编译器将自动为您填充它.您可以使用以下Call-Site属性:CallerMemberName,CallerLineNumber和CallerFilePath.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |