编写高质量代码改善C#程序的157个建议——建议156:利用特性为应用程序提供多个版本
2024-09-28 18:28:12
建议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个建议》陆敏技
最新文章
- ApiAuthValue鉴权机制总结
- .net core API 统一拦截错误
- xp远程桌面登陆需要身份验证问题解决
- table_tricks_基于bootstrap
- Spring对Hibernate事务管理
- @font-face字体文件用法
- centos下各种c++库文件的安装
- lex&;yacc
- [Python]linux自己定义Python脚本命令
- 【libsvm学习】
- OpenStack_Swift源代码分析——创建Ring及加入�设备源代码算法具体分析
- DZY Loves Colors
- 【转】YUV值对应的颜色
- 蚁群算法matlab实现
- hdu5353 Average(模拟)
- bootstrap注意事项(四)表格
- Swift类中如何创建一个对外只读对内可读写的属性
- 对css语法中position值的理解
- github上删除一个项目或者reposity
- Android Fragment与Activity通讯详解