c# - 我使用哪种方法?

标签 c# winforms debugging methods

我的目标是向我的方法中添加一些#if DEBUG,但是我不想编辑我复制并粘贴到每个方法中的代码。

是否有这样一段通用的代码:

void DoSomething()
            {
#if Debug
            Log("Now In " + MethodName);
#endif
            }

MethodName 在哪里被填充为等于 DoSomething,或者调用 Log 的任何方法?

最佳答案

如果您使用的是 .NET 4.5,则可以使用 CallerMemberName属性:

public static GetCallerMemberName([CallerMemberName]string caller = null)
{
    return caller;
}

请注意,调用此方法时,您无需将任何内容作为参数传递 - C# 编译器会为您完成这项工作。这也意味着您可以避免在运行时执行反射,从而使该方法更快。

用法:

void DoSomething()
{
#if Debug
    Log("Now In " + GetCallerMemberName()); // Logs "Now in DoSomething"
#endif
}

关于c# - 我使用哪种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498013/

相关文章:

python - Pycharm 和 matplotlib 仅在 Debug模式下工作

c# - 我可以将用户定义的数据类型存储到 Azure 数据库中吗?

c# - 将现有网站添加到 Visual Studio 解决方案会引发 System.InvalidOperationException

c# - 切换枪支

c# - 如何从简单的 DataTable 创建 DataGridViewComboBoxColumn

c# - 使用 StreamWriter 实现滚动日志,并从顶部删除

c# - 使用 C# WebBrowser 时是否可以检测到调用的任何 javascript 函数

Java:使用 SwingUtilities.invokeLater() 进行调试

c# - 是否可以在 VS2015 实时可视化树中查看 ContextMenu 的实时属性?

c# - 表达式树重用值?