编写高质量代码改善C#程序的157个建议——建议156:利用特性为应用程序提供多个版本
2015-08-24 18:45
696 查看
建议156:利用特性为应用程序提供多个版本
基于如下理由,需要为应用程序提供多个版本:
应用程序有体验版和完整功能版。
应用程序在迭代过程中需要屏蔽一些不成熟的功能。
假设我们的应用程序共有两类功能:第一类功能属于单机版,而第二类的完整版还提供了在线功能。那么,在功能上,需要定制两个属性“ONLINE”和“OFFLINE”。在体验版中,我们只开放“OFFLINE”功能。要实现此目的,不应该提供两套应用程序,而应该通过最小设置。为一个应用程序输出两个发布版本。这一切,可以通过.NET中的特性(Attribute)来实现。
要实现两个不同的功能,需要在程序入口这个文件最开头定义:
#define ONLINE
//#define OFFLINE
这条编译符号一定要在文件的最开头。同时,该定义只对本文件有效。如果要想定义全局编译符号,则必须在项目属性中定义。如图:
如果想定义多个全局宏定义,则用逗号隔开,如“OFFLINE,ONLINE”。
如果要发布所有功能,就输入条件编译符号#define ONLINE,代码运行如下:
完整版功能
单机版功能
如果要发布离线版功能,就用#define OFFLINE。运行如下:
单机版功能
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
基于如下理由,需要为应用程序提供多个版本:
应用程序有体验版和完整功能版。
应用程序在迭代过程中需要屏蔽一些不成熟的功能。
假设我们的应用程序共有两类功能:第一类功能属于单机版,而第二类的完整版还提供了在线功能。那么,在功能上,需要定制两个属性“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# 抽象工厂
- C# interface 接口理解
- 编写高质量代码改善C#程序的157个建议——建议155:随生产代码一起提交单元测试代码
- C#socket资料汇总
- C#获取进程或线程相关信息的方法
- (转)C# 泛型详解
- c#下halcon配置
- C# 工厂设计模式
- C# 中的委托和事件
- C#中的delegate以及利用List<T>中delegate快速实现排序、查找
- 开博第一篇作品-C#winform版《仿360杀毒》页面切换动画效果(内含源码)
- C# 二进制字符串互转
- C#VS面向对象基础(二)
- 编写高质量代码改善C#程序的157个建议——建议154:不要过度设计,在敏捷中体会重构的乐趣
- C# VS 面向对象基础(一)
- C#面向对象 基础概念25个
- C# 单例模式和泛型应用
- C# 生成时间戳
- C#堆内存分配和栈内存分配
- C#面向对象基础