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 ...
随机推荐
- 628. Maximum Product of Three Numbers
Given an integer array, find three numbers whose product is maximum and output the maximum product. ...
- javaweb面试题
1.Tomcat的优化经验 答:去掉对web.xml的监视,把JSP提前编辑成Servlet:有富余物理内存的情况下,加大Tomcat使用的JVM内存. 2.什么是Servlet? 答:可以从两个方面 ...
- POJ 2135 最小费用最大流
题目链接 Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18961 Accepted: 7326 D ...
- JS实现2048代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java为什么要配置环境变量及如何配置环境变量
在没有配置环境变量之前,用cmd执行Java文件,需要指明Java的可执行文件,否则无法运行. 配置环境是为了在不用切换可执行文件目录下,方便Java程序的执行和控制. 那么环境变量就是让系统根据环境 ...
- Dockerfile的指令
指令的一般格式为 INSTRUCTION arguments,指令包括 FROM.MAINTAINER.RUN 等. FROM 格式为 FROM <image>或FROM <imag ...
- 作业03-面向对象入门.md
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你 ...
- 弹出层之2:JQuery.BlockUI
JQuery.BlockUI是众多JQuery插件弹出层中的一个,它小巧(原版16k,压缩后10左右),容易使用, 功能齐全,支持Iframe,支持Modal,可定制性高也意味他默认谦虚的外表. jQ ...
- pandas小记:pandas高级功能
http://blog.csdn.net/pipisorry/article/details/53486777 pandas高级功能:面板数据.字符串方法.分类.可视化. 面板数据 {pandas数据 ...
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)
8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...