特性就是在类的类名称、属性、方法等上面加一个标记,使这些类、属性、方法等具有某些统一的特征,从而达到某些特殊的需要。举个小栗子:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作、文件的操作等)经常使用try...catch。这个时候如果使用特性,就可 以大大减少方法里面的try...catch的使用。你只需要定义一个专门捕捉异常的特性类ExceptionExAttribute,然后给这个特性类 做些特殊处理,比如给它增加一个AOP拦截的功能(AOP拦截的方式很多,有兴趣可以搜搜看,园子里面很多类似的文章)。那么在可能出现异常的方法名称上 面加上一个[ExceptionEx]特性标签,这个方法就具有自动捕捉异常的能力。由此可见,特性可以减少统一需求的代码量.

官方描述:

特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。

特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性

1.预定义特性

.Net 框架提供了三种预定义特性:

·AttributeUsage 起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。

·Conditional 描述了如何使用一个自定义特性类。它规定了特性可应用到的项目的类型。

·Obsolete 这个属性用来标记当前的方法已经被废弃,不再使用了。

举个小栗子a如下:

 [Obsolete("Don't use OldMethod, use NewMethod instead", true)]
static void OldMethod()
{
Console.WriteLine("It is the old method");
}
static void NewMethod()
{
Console.WriteLine("It is the new method");
}
static void Main(string[] args)
{
OldMethod();
NewMethod();
Console.ReadKey();
}

实际上是这样

2.自定义特性

特性是给目标类型添加描述性的元数据,它不会影响代码的运行。自定义特性的命名必须以Attribute结尾,如DefinedAttribute, 而在使用的时候可以直接用[Defined]或者[DefinedAttribute]

小栗子b如下:

        public class DefinedAttribute:Attribute
{
private string Name { get; set; }
private string Sex { get; set; }
public DefinedAttribute(string _Name,string _Sex)
{
this.Name = _Name;
this.Sex = _Sex;
}
}
public class TestAttribute
{
[Defined("小明","男")]
[Defined("张伟","女")]
public void A()
{
Console.WriteLine("");
}
}

最新文章

  1. ABP源码分析三十:ABP.RedisCache
  2. 接入百度语音SDK的步骤
  3. Demystifying ASP.NET MVC 5 Error Pages and Error Logging
  4. php模拟飞鸽传输协议,代码实现向飞鸽发送消息
  5. BizTalk开发系列(九) MAP的连接方法
  6. C语言-10-位域与共用体
  7. Eclipse插件Target Management (RSE)
  8. Notepad++插件之TextFX
  9. 解除网页右键限制和开启网页编辑状态的js代码
  10. cas+tomcat+shiro实现单点登录-4-Apache Shiro 集成Cas作为cas client端实现
  11. javascript,css3加载动画
  12. Ubuntu通过使用PyCharm 进行调试 Odoo 8.0 可能出现的问题
  13. 自学javaee程序员之路--ssm的小项目(一)
  14. phpmyadmin 免登陆
  15. Docker镜像管理
  16. va_start,va_arg,va_end的使用
  17. 【vijos1780】【NOIP2012】开车旅行 倍增
  18. D. Little C Loves 3 II
  19. 紧急通知:Onion勒索病毒正在大范围传播!已有大量学生中招!(转)
  20. mahout做推荐时uid,pid为string类型

热门文章

  1. 《黄聪:手机移动站SEO优化教程》1、为什么要做手机移动端网站
  2. 论文他引次数及ESI高被引论文查询方法
  3. semanage: 未找到命令
  4. 转_ _android开发中如何结束所有的activity
  5. ylbtech-dbs:ylbtech-3,BarCode(条码资源系统)
  6. netty入门实例
  7. 2015 年最棒的 5 个 HTML5 框架
  8. 鼎信通达gsm网关和asterisk对接的调试
  9. 无法创建spool文件
  10. DualPivotQuicksort 排序算法解析