【轉】編寫高品質代碼改善C#程式的157個建議——建議156:利用特性為應用程式提供多個版本

來源:互聯網
上載者:User

標籤:定製   宏定義   編譯   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:利用特性為應用程式提供多個版本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.