2014-07-16 83 views
0

如何将#define试用版更改为#define PREMIUM,例如当用户输入某个注册码时。如何更改#define

谢谢。

//#define TRIAL 
#define PREMIUM 

using System; 
using System.Diagnostics; 
using System.Reflection; 

namespace Attributes 
{ 
    [Obsolete("This is an old class. Use new class instead!")] 
    class Test 
    { 
     [Conditional("TRIAL")] 
     void Trial() 
     { 
      Console.WriteLine("Trial"); 
     } 

     [Conditional("PREMIUM")] 
     void Release() 
     { 
      Console.WriteLine("PREMIUM"); 
     } 
...................................... 

回答

1

#定义是编译时的指令,所以你不能用它......相反,你应该使用好老的,如果:

class Test 
{ 
    void DoAction() { 
     if(trial) { Console.WriteLine("Trial"); } 
     else { Console.WriteLine("PREMIUM"); 
    } 
} 
2

这听起来像你可能会被误解预处理指令。您应该在用户的机器上以某种方式加密这种信息并将其加载到变量中,或者更好的是,发布两个版本并提供升级选项。这将更加稳定和安全。

如果您选择采用该方法,那么您可以使用预处理器指令为每个版本的程序编译不同版本的库和代码。