内容简介:C# 特性(Attribute)
个人定义:不侵入对象的情况下,添加对象附注信息。
官方定义:将预定义的系统信息或用户定义的自定义信息与目标元素相关联。目标元素可以是程序集、类、构造函数、委托、枚举、事件、字段、接口、方法、可移植可执行文件模 块、参数、属性 (Property)、返回值、结构或其他属性 (Attribute)。提供的信息也称为元数据,元数据可由应用程序在运行时进行检查以控制程序处理数据的方式,也可以由外部 工具 在运行前检查以控制应用程序处理或维护自身的方式。
.Net 框架提供了三种预定义特性:
- AttributeUsage
- Conditional
- Obsolete
示例: 读取枚举值上加的 特性信息
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyAttribute { [Obsolete("这是一个过期特性")] public enum EnumState { [Remark("我是打开")] //[Remark("")] Open =1, [Remark("我是关闭")] Close=2 } }
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace MyAttribute { //1.特性的适用范围 2.特性是否允许用多次 3.特性是否被派生类继承 [AttributeUsage(AttributeTargets.All,AllowMultiple =true, Inherited =true)] //被调用时执行条件编译,取决于指定的值(如“DEBUG”,"RELEASE"...) [Conditional("DEBUG")] public class RemarkAttribute:Attribute { public string remark; public string Remark { get { return remark; } } public RemarkAttribute(string remark) { this.remark = remark; } } public static class RemarkExtend { public static string RemarkDescription(this EnumState state) { Type type = typeof(EnumState); FieldInfo info= type.GetField(state.ToString()); object[] remarkCustomAttribute= info.GetCustomAttributes(typeof(RemarkAttribute),false); if(remarkCustomAttribute != null && remarkCustomAttribute.Length>0) { RemarkAttribute remarkattribute = remarkCustomAttribute[0] as RemarkAttribute; return remarkattribute.Remark; } else { return state.ToString(); } } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyAttribute { class Program { static void Main(string[] args) { EnumState state = EnumState.Open; Console.WriteLine(state.RemarkDescription()); Console.Read(); } } }
至此,关于特性的学习就到此结束了,谢谢您的阅读。
特性还有很多高级的用法,博主只是小试牛刀,希望本文能够帮到你,当然若有不完善地方,欢迎斧正。
参考MSDN:https://msdn.microsoft.com/zh-cn/library/system.attribute(VS.80).aspx
本文永久更新链接地址 : http://www.linuxidc.com/Linux/2017-06/144703.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 『互联网架构』软件架构-redis特性和集群特性(中)(49)
- 『互联网架构』软件架构-redis特性和集群特性(上)(48)
- 『互联网架构』软件架构-redis特性和集群特性(下)(50)
- JDK 14 功能特性
- python—高级特性
- React 16 新特性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
风吹江南之互联网金融
陈宇(江南愤青) / 东方出版社 / 2014-6-1 / 55元
随着中国互联网金融浪潮高涨,P2P、众筹、余额宝、微信支付等新生事物层出不穷,加之大数据等时髦概念助阵,简直是乱花渐欲迷人眼,令媒体兴奋,公众狂热。那么,互联网金融真的能“颠覆”传统金融吗?当互联网思维对撞传统金融观念,是互联网金融的一统天下,还是传统金融业的自我革新?究竟是谁动了金融业的奶酪? 本书作者早期试水创立具有互联网金融雏形的网站,后来成为互联网金融的资深投资人,基于其多年在该领域......一起来看看 《风吹江南之互联网金融》 这本书的介绍吧!