gpt4 book ai didi

c# - 如何改进 C# 中 get 调用方法的代码

转载 作者:行者123 更新时间:2023-11-30 13:39:03 25 4
gpt4 key购买 nike

我们有一个“logger”类,它有获取日志消息的 log 方法,并将消息和调用方法写入日志,首先我们还执行以下操作,将新参数 Method 发送到 log 方法.Base.GetCurrentMethod()。我找到了另一种方法,使用 Relection.MethodBase:

public void Log(string message)
{
stackTrace = new StackTrace();
string methodName = stackTrace.GetFrame(1).GetMethod().Name;
....
}

但我有一个问题,每次调用 log 方法时,我都强制从 StackTrace 创建新实例,当我尝试在构造函数中创建实例时,我得到了方法名称是 InvokeMethod

我们在项目中使用 MEF。有什么改进代码的想法吗?

最佳答案

如果您使用的是最新最好的 C# (5) 版本,这是通过调用站点属性内置到语言中的。你会像这样使用它:

public void Log(string message, [CallerMemberName] string methodName = null)
{
}

您在不提供第二个参数的情况下调用该方法,C# 编译器会自动为您填充它。您可以随意使用以下 Call-Site 属性:CallerMemberName , CallerLineNumberCallerFilePath .

关于c# - 如何改进 C# 中 get 调用方法的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com