c# - 是否可以使用条件属性来创建类似的调试器和运行时方法?

标签 c# conditional-attribute

是否可以创建 2 个具有相同方法名称的方法,传入值并使用条件属性和一些反条件返回值,例如

[Conditional("Debug")]
    private string StringGenerator()
    {
        Guid g = Guid.NewGuid();
        string guidString = Convert.ToBase64String(g.ToByteArray());
        guidString = guidString.Replace("=", "");
        guidString = guidString.Replace("+", "");
        return guidString;
    }


    [!Conditional("Debug")]// I know using '!' doesn't really work
    private string StringGenerator()
    {
        Guid g = Guid.NewGuid();
        string guidString = Convert.ToBase64String(g.ToByteArray());

        return guidString;
    } 

这样你就可以只调用一个方法,编译器会根据是否定义了“Debug”来选择哪个方法?

谢谢

最佳答案

不,这是不可能的。 Conditional 属性不控制方法是否在代码中定义,它只控制方法调用包含在调用代码中的条件。

此外,Conditional 属性可以多次应用于一个方法。因此,这里没有简单的开/关决定。考虑

[Conditional("DEBUG")]
[Conditional("TRACE")]
void Target() { ... }

这里有 4 种组合需要考虑,而不仅仅是 2 种。

关于c# - 是否可以使用条件属性来创建类似的调试器和运行时方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15206853/

相关文章:

c# - 如何覆盖路由表中的 .svc 文件?

c# - MassTransit - 多个消费者都可以收到相同的消息吗?

C# Oracle 表问题

c# - 如何停止 ASP.NET Core 服务器中的 MassTransit 总线?

c# - 使用 ConditionalAttribute 是否也会删除参数计算?

c# - 方法的条件属性和计算参数

c# - 如何在特定时间(例如 3 秒)内在标签上显示文本?

接口(interface)成员的 C# 条件属性

c# - 为什么我不能将 Debug.Assert() 与接受动态并返回 bool 的方法一起使用?

c# - 为什么我不能在类上使用 ConditionalAttribute?