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

最新文章

  1. ApiAuthValue鉴权机制总结
  2. .net core API 统一拦截错误
  3. xp远程桌面登陆需要身份验证问题解决
  4. table_tricks_基于bootstrap
  5. Spring对Hibernate事务管理
  6. @font-face字体文件用法
  7. centos下各种c++库文件的安装
  8. lex&yacc
  9. [Python]linux自己定义Python脚本命令
  10. 【libsvm学习】
  11. OpenStack_Swift源代码分析——创建Ring及加入�设备源代码算法具体分析
  12. DZY Loves Colors
  13. 【转】YUV值对应的颜色
  14. 蚁群算法matlab实现
  15. hdu5353 Average(模拟)
  16. bootstrap注意事项(四)表格
  17. Swift类中如何创建一个对外只读对内可读写的属性
  18. 对css语法中position值的理解
  19. github上删除一个项目或者reposity
  20. Android Fragment与Activity通讯详解

热门文章

  1. IBM AIX创建lv
  2. Xming配置
  3. Vue基础知识之常用属性和事件修饰符(二)
  4. Masking operations
  5. FastDFS:搭建文件管理系统
  6. 利用jekyll架设个人博客
  7. OPEN LDAP
  8. PencilWang博客目录
  9. 如何安装Zend Studio 以及汉化和基本准备工作
  10. Maven详解【面试+工作】 各种安装 没用