2014-07-16 113 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

這聽起來像你可能會被誤解預處理指令。您應該在用戶的機器上以某種方式加密這種信息並將其加載到變量中,或者更好的是,發佈兩個版本並提供升級選項。這將更加穩定和安全。

如果您選擇採用該方法,那麼您可以使用預處理器指令爲每個版本的程序編譯不同版本的庫和代碼。