2016-11-04 47 views
2

我想做这样的事情。如果定义DEBUG,那么命名空间是Test,或者命名空间是TestB。请参阅下面的示例代码。我能做到吗,或者你有更好的想法来实现这一目标?提前致谢!在C中动态更改命名空间#

# if DEBUG 
    [SomekindofAttribute(Namespace = "Test")] 
#endif 
namespace TestB 
{ 

    public class Program 
    {} 
} 
+0

您可能会从[Dynamic Namespace Switching](http://stackoverflow.com/a/8008989/3796048) –

+0

得到一些想法谢谢,我想我已经得到了正确的答案。但是,谢谢你们一样 –

回答

1

你可以这样做:

#if DEBUG 
namespace TestB 
#else 
namespace Test 
#endif 
{ 
    public class Program { } 
} 

虽然这看起来像一个非常坏主意。使用Program的所有内容都必须为它们的using声明执行相同的预处理器指令。

+0

啊哈,我没想到代码可以这样写。非常感谢您的快速响应。 –

4

为什么不向条件声明本身添加条件?
如果我正确理解你的问题,那么你可以使用下面的代码。

#if DEBUG 
namespace Test 
#else 
namespace TestB 
#endif 
{ 
    public class Program 
    { 
     public static void Main() 
     { 
      Console.WriteLine(new Program().GetType().FullName); 
      Console.ReadLine(); 
     } 
    } 
} 

请确认这是你想要的。

+0

非常感谢。这就是我正在寻找的东西,我没有想到代码可以这样写。但罗布先生比你早1分钟回答,所以...... :) –

+0

@GoddessGuard其实我首先得到了答案,我在02:33:26 UTC回答,他在02:34:08 UTC回答。但是不要紧。 :) –