C#attribute-----------初级
前言:
attribute是 .net FrameWork 提出的技术,可以为自己的代码添加注解,从而实现些特殊功能。
一. attribute功能
attribute被译作特性,既然是特性,必然功能不一般。
1.微软的说法
MSDN给出的attribute功能:Attribute类将预定义的系统信息或用户定义的自定义信息与目标元素相关联。
预定义的系统的信息也就是.net给出的系统attribute,用户自定义的信息也就是用户定义的attribute。目标元素呢就是指元数据的元素TypeDef(类,结构,枚举,接口,委托),MethodDef,ParamDef,FieldDef,PropertyDef.等等。
2. 自己的看法
无论是定制的Attribute(系统),还是自定义的Attribute 其目的都是为了增强 对你目标元素的修饰。就好比public,private这种修饰符是为了控制对元数据的访问权限。注释是为了方便其他人阅读理解代码。那么应用Attribute的场合就是当我需要对元数据进行修饰。那么问题来了,Attribute究竟能提供什么样的特性,让我们必须要使用它来修饰元数据呢
1)设置我们的Assembly信息
我们创建一个工程时,系统会自动生成一个Assemblyinfo.cs,这个文件就应用了大量了Attribute,为我们提供程序集信息
[assembly: AssemblyTitle("AttributeTest")] //名称
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]//程序集公司
2)测试时经常用到的,ConitionAttribute,一个工程中需要测试的方法有很多,你把他归为几类,然后分别进行测试。总不能测试这类的代码就注释掉其他的代码嘛。这样做也太low了。这时候就可以利用ConitionAttribute特性
给各类代码标示上不同的特性。然后在开头使用#define AttributeName.想测试哪类就使用哪类Attribute名字。
eg。
工程中有两类方法
[Conition("A")]
public void method1()
public void method2()
[Conition("B")]
public void method3()
public void method4()
然后在开头加上#define A
这样运行时就会只识别method1(),method2()
3)上面两种都是系统提供的定制Attribute,那么什么时候使用自定义的呢
有需求的时候其他东西又实现不了的时候就可以考虑自定义Attribute了
比如说,我现在做数据库表的实体类,这样取数据的时候绑定到实体类,不用一个个赋值。数据库中的列对应着实体类的属性。在select 表时,将结果绑定到实体类,你需要遍历实体类属性,所以你必须确保实体类中的都是属性而不是字段或其他什么。那么你如何做到这一点呢,怎么修饰这个元数据使之一定是属性呢:自定义attribute
[AttributeUsage(AttributeTargets.Property)]//指定目标元素只能是属性
class RetriveFromDb : Attribute
{
}
[RetriveFromDb]
public string ID { get; set; }//是property,编译通过
[RetriveFromDb]
public string GRADE = "98";//field,编译不通过
本篇只解释了Attribute功能。后续讲解Attribute特点和如何使用
C#attribute-----------初级的更多相关文章
- C#130问,初级程序员的面试宝典
首先介绍下,目前C#作为一门快速开发的语言,在面试的过程中需要注意的技术知识点,了解下面的知识点对于初级工程师入职非常有帮助,也是自己的亲身体悟. 1. 简述 private. protecte ...
- css 初级进阶
摘自:https://www.jianshu.com/p/dcc40ccc9841 CSS中级 Class和ID选择器 CSS初级教程中我们可以使用HTML标签选择器定义样式. 同样你也可以使用Cla ...
- python入门-分类和回归各种初级算法
引自:http://www.cnblogs.com/taichu/p/5251332.html ########################### #说明: # 撰写本文的原因是,笔者在研究博文“ ...
- hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2
问题导读 1.改变hdfs文件的权限,需要修改哪个配置文件?2.获取一个文件的或则目录的权限,哪个命令可以实现?3.哪个命令可以实现设置访问控制列表(ACL)的文件和目录? 接上篇:Hadoop[2. ...
- .NET Core CSharp初级篇 1-5 接口、枚举、抽象
.NET Core CSharp初级篇 1-5 本节内容类的接口.枚举.抽象 简介 问题 如果你需要表示星期或者是某些状态,使用字符串或者数字是否不直观? 你是否发现,无论何种电脑,它的USB口的设计 ...
- 图解Python 【第五篇】:面向对象-类-初级基础篇
由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节主要讲基础和面向对象的特性 本节内容一览图: 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 ...
- [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute
剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...
- JavaScript特性(attribute)、属性(property)和样式(style)
最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...
- [C#] C# 知识回顾 - 特性 Attribute
C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...
- js attribute 和 jquery attr 方法
attribute 是原生js dom 对象上的一个属性,这个属性有很多子属性,比如 isId(判断属性是否是Id) , name (获取属性名称) , value (获取属性值),attribute ...
随机推荐
- 反射 类的加载 Schema DOM 解析方式和解析器 命名空间
Day15 反射 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. l 加载 就是指将class文件读入内存,并为之创建 ...
- 03 持续集成和部署/基础设施 - DevOps之路
02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...
- [JCIP笔记](五)JDK并发包
这一节来讲一讲java.util.concurrent这个包里的一些重要的线程安全有关类. synchronized容器 synchronized容器就是把自己的内部状态封装起来,通过把每一个publ ...
- Linux下使用MD5加密BASE64加密
这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e 这里以1.txt为需要被加密的文件. 一. 用oppnssl md5 加密字符串和 ...
- jQuery 安装
网页中添加 jQuery 可以通过多种方法在网页中添加 jQuery. 您可以使用以下方法: 从 jquery.com 下载 jQuery 库 从 CDN 中载入 jQuery, 如从 Google ...
- JDBC访问数据库的一些小技巧
一. 连接 1.使用try with resources关闭JDBC资源 示例代码如下: public List<User> getUser(int userId) { try (Conn ...
- Winform DevExpress控件库(二) 使用SplashScreenManager控件定制程序加载页面
SplashScreenManager控件:主要作用是显示在进行耗时操作时的等待界面: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下: 在工具 ...
- 粗糙的es6 -> es5转换正则集
(r'() => {}','function () {return {}}'), # (r'\{\.\.\.(.+?)\}','Object.assign({}, \\1)') , # (r'( ...
- 让你的代码减少三倍!使用kotlin开发Android(五) 监听器
本文同步自 博主的私人博客wing的地方酒馆 在前面的博客中,有一个栗子,是点击按钮转跳的监听器. button.setOnClickListener { val user = User(" ...
- Dynamics CRM2016 Web Api之根据时间查询数据
我的博文里已经有多次提到CRM中的时间处理问题了,本篇继续探讨在web api的场景下时间字段如何处理,本篇只涉及查询,针对2016中新增的时间行为"用户当地时间"和"无 ...