C# 特性 Attribute
特性就是在类的类名称、属性、方法等上面加一个标记,使这些类、属性、方法等具有某些统一的特征,从而达到某些特殊的需要。举个小栗子:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作、文件的操作等)经常使用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("");
}
}
最新文章
- ABP源码分析三十:ABP.RedisCache
- 接入百度语音SDK的步骤
- Demystifying ASP.NET MVC 5 Error Pages and Error Logging
- php模拟飞鸽传输协议,代码实现向飞鸽发送消息
- BizTalk开发系列(九) MAP的连接方法
- C语言-10-位域与共用体
- Eclipse插件Target Management (RSE)
- Notepad++插件之TextFX
- 解除网页右键限制和开启网页编辑状态的js代码
- cas+tomcat+shiro实现单点登录-4-Apache Shiro 集成Cas作为cas client端实现
- javascript,css3加载动画
- Ubuntu通过使用PyCharm 进行调试 Odoo 8.0 可能出现的问题
- 自学javaee程序员之路--ssm的小项目(一)
- phpmyadmin 免登陆
- Docker镜像管理
- va_start,va_arg,va_end的使用
- 【vijos1780】【NOIP2012】开车旅行 倍增
- D. Little C Loves 3 II
- 紧急通知:Onion勒索病毒正在大范围传播!已有大量学生中招!(转)
- mahout做推荐时uid,pid为string类型