在婚恋网站做翻译好吗,网页制作与设计简称,免费学高中课程的软件,泉州关键词排名推广咨询区 Ronnie Overby我的 asp.net core 项目需要访问一个站外的 api 接口#xff0c;双方协商通过api参数来约定当前请求是 测试 还是 正式, 目前的做法就是在测试环境中放开测试代码#xff0c;在发布环境再注释掉这段代码#xff0c;作为极客#xff0c;我想知道有什么极… 咨询区 Ronnie Overby我的 asp.net core 项目需要访问一个站外的 api 接口双方协商通过api参数来约定当前请求是 测试 还是 正式, 目前的做法就是在测试环境中放开测试代码在发布环境再注释掉这段代码作为极客我想知道有什么极简或者自动化的方式帮我判断呢回答区 Dariusz Woźniak这种多条件的解决方案太多了我列几种可供你参考。Conditional 特性这个特性会告诉编译器除非遇到指定的编译符号否则将会被忽略参考下面的例子static void Main(string[] args)
{[Conditional(DEBUG)]static void Method() { }Method();
}#if 预处理指令当你用了 #if ... #end if 成对预处理指定时当遇到编译符号与定义的环境一致时将会执行此if。#if DEBUGstatic int testCounter 0;
#endif需要提醒一下这个预处理指令不像 C, C 那种可以带逻辑条件 C# 中的if预处理指令只能是一种 boolean 型表达式。Debug.Write 方法Debug.Write 或 Debug.WriteLine 语句它可以将debug信息写入到 Trace Listeners 监听器下。Debug.Write(Something to write in Output window.);最后稍微提醒一下使用 #if 预处理指令时在特定环境下对变量的赋值一定要记得多测试比如下面的场景。string sth null;#if DEBUGsth oh, hi!;
#endifConsole.WriteLine(sth);如果当前是 Debug 环境那么 str oh, hi如果为 Release 环境那么 strnull在某些情况下可能会造成 NullReferenceException 异常。James Hulse我也有同样的问题不过我是通过 Diagnostics 下的 IsAttached 属性判断的。if (System.Diagnostics.Debugger.IsAttached)
{// Code here
}属性解释如下//// Summary:// Gets a value that indicates whether a debugger is attached to the process.//// Returns:// true if a debugger is attached; otherwise, false.public static bool IsAttached{get{throw null;}}只需要判断是否被调试器附加了就可以执行特定代码完美。点评区 Dariusz Woźniak 大佬提供的几种方式早有耳闻后面这位大佬提供的方法让我耳目一新学习了。