zoukankan      html  css  js  c++  java
  • 编写高质量代码改善C#程序的157个建议——建议156:利用特性为应用程序提供多个版本

    建议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个建议》陆敏技

  • 相关阅读:
    如何用纯 CSS 创作一个跳动的字母 i
    如何用纯 CSS 创作一个变色旋转动画
    如何用纯 CSS 创作气泡填色的按钮特效
    如何用纯 CSS 创作一个跳 8 字型舞的 loader
    如何用纯 CSS 创作一只徘徊的果冻怪兽
    如何用纯 CSS 创作一个单元素抛盒子的 loader
    如何用纯 CSS 创作单元素点阵 loader
    如何用纯 CSS 创作一个摇摇晃晃的 loader
    [Monkey King]
    473. 核电站问题
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4755619.html
Copyright © 2011-2022 走看看