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 ...
随机推荐
- RESTful Console Application
RESTful Console Application Introduction Inspirited by RESTFul architecture, A console application t ...
- js求和运算在可变参数的情况下ES3、ES5和ES6的写法区别
//ES3.ES5的写法 function foo(){ var arr = Array.prototype.slice.call(arguments); var sum = 0; arr.forEa ...
- 基于PHP的快递查询免费开放平台案例-快宝开放平台
快递查询是快递业务中极其重要的业务,免费的快递查询开放平台:快宝开放平台. 快宝开放平台:http://open.kuaidihelp.com/home,已经对接100多家快递公司,实现快递物流信息实 ...
- 通讯协议序列化解读(二) protostuff详解教程
上一篇文章 通讯协议序列化解读(一):http://www.cnblogs.com/tohxyblog/p/8974641.html 前言:上一面文章我们介绍了java序列化,以及谷歌protobu ...
- E1
en表"使怎么样" engage 吸引,从事,订婚 be engaged in doing sth. 忙于 endure 忍耐,忍受 enforce 强制执行 enrol ...
- Go 语言函数闭包
Go 语言支持匿名函数,可作为闭包.匿名函数是一个"内联"语句或表达式.匿名函数的优越性在于可以直接使用函数内的变量,不必申明. 以下实例中,我们创建了函数 getSequence ...
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50534361 我们都清楚,可以使用hibernate的metada ...
- ArrayList中的modCount与ConcurrentModificationException
在看ArrayList源码时,看到了一个字段modCount.在add.remove.clear等方法中都有modCount++的操作.不明白什么意思.点进去看了看该字段的解释,总算明白了.modCo ...
- Programming In Scala笔记-第十五章、Case Classes和模式匹配
本章主要分析case classes和模式匹配(pattern matching). 一.简单例子 接下来首先以一个包含case classes和模式匹配的例子来展开本章内容. 下面的例子中将模拟实现 ...
- Swift中如何化简标准库中冗长的类实例初始化代码
可能有些童鞋并不知道,在Swift中缩写点符号对于任何类型的任何static成员都有效. 我们实际写一个例子看一下: import UIKit class CFoo{ static let share ...