標籤:定製 宏定義 編譯 console .net 建議 http class 檔案
建議156:利用特性為應用程式提供多個版本
基於如下理由,需要為應用程式提供多個版本:
- 應用程式有體驗版和完整功能版。
- 應用程式在迭代過程中需要屏蔽一些不成熟的功能。
假設我們的應用程式共有兩類功能:第一類功能屬於單機版,而第二類的完整版還提供了線上功能。那麼,在功能上,需要定製兩個屬性“ONLINE”和“OFFLINE”。在體驗版中,我們只開放“OFFLINE”功能。要實現此目的,不應該提供兩套應用程式,而應該通過最小設定。為一個應用程式輸出兩個發布版本。這一切,可以通過.NET中的特性(Attribute)來實現。
class MyService { [Conditional("ONLINE")] public void Testing() { Console.WriteLine("完整功能版"); } [Conditional("OFFLINE")] [Conditional("ONLINE")] public void GetInfoFromNet() { Console.WriteLine("單機功能版"); } } class Program { static void Main(string[] args) { MyService service=new MyService(); service.Testing(); service.GetInfoFromNet(); } }
要實現兩個不同的功能,需要在程式入口這個檔案最開頭定義:
#define ONLINE
//#define OFFLINE
這條編譯符號一定要在檔案的最開頭。同時,該定義只對本檔案有效。如果要想定義全域編譯符號,則必須在項目屬性中定義。
如果想定義多個全域宏定義,則用逗號隔開,如“OFFLINE,ONLINE”。
如果要發布所有功能,就輸入條件編譯符號#define ONLINE,代碼運行如下:
完整版功能
單機版功能
如果要發布離線版功能,就用#define OFFLINE。運行如下:
單機版功能
轉自:《編寫高品質代碼改善C#程式的157個建議》陸敏技
【轉】編寫高品質代碼改善C#程式的157個建議——建議156:利用特性為應用程式提供多個版本