gpt4 book ai didi

c# - 将方法的名称作为参数传递

转载 作者:太空狗 更新时间:2023-10-29 18:06:41 24 4
gpt4 key购买 nike

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,我想通过某种方式将方法的名称作为参数传递,而无需手动编辑代码。

这可能吗?

最佳答案

从 C# 5 开始,这真的很容易使用 caller info attributes :

private void Method1()
{
//Do something
Log("Something");
}

private void Method2()
{
//Do something
Log("Something");
}

private void Log(string message, [CallerMemberName] string method = null)
{
//Write to a log file
Trace.TraceInformation(message + "happened at " + method);
}

就实现这一点而言:

  • 必须正在使用 C# 5(或更高版本)编译器,否则它不会知道如何专门处理这些属性
  • 这些属性必须存在于您的目标环境中。那里的选项:
    • 在 .NET 4.5 中,属性只是存在
    • 对于 .NET 4,您可以使用 Microsoft.Bcl NuGet package
    • 对于早期版本的 .NET,复制 attribute declaration到您自己的代码中,确保您使用相同的 namespace 。当您稍后迁移到新版本的 .NET 时,您需要再次将其删除。

关于c# - 将方法的名称作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21230580/

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