阻止代码执行它的根

时间:2017-03-14 12:37:46

标签: c# optimization conditional

我想做什么

我试图编写优化函数调用程序,执行可以是可选的,可以在编译之前定义。没有用户在开始时指定它应该执行不是。

可能的解决方案

  1. 首先使用#define指令。不好的是,他们必须为每个 LogMessage调用添加和关闭它们,这是我不想使用的。
  2. 第二个解决方案是使用[Conditional("")],但这也需要在每个函数调用之前添加它。
  3. 是在功能块内部使用指令,但这会牺牲性能。关于这一点,请参阅示例
  4. 示例

    考虑这个例子。它做我想做的一切 - 用户调用LogMessage("无论"),在编译之前我指定它应该在构建中执行。

    LogMessage("whatever");
    
    public static void LogMessage(string message){
    #if LOG
       ///execute log
    #endif
    }
    

    问题是字符串"之前创建的" - 无论是否执行。我不想允许字符串创建和/或构造,例如LogMessage(someNUmber +" is" + otherNumber);如果不应该发生。

    终点 我试图找到LogMessage将被取消的解决方案 - 在它的根目录下被阻止,而不再添加指令。我想在编译之前可能会进行某种反射搜索,但我不太确定。

    谢谢, 我希望有人可以朝正确的方向发光。

0 个答案:

没有答案