c#中的特性
c#中的特性
特性在我的理解就是在类或者方法或者参数上加上指定的标记,然后实现指定的效果。
和Java中的注解@Annotation类似。
c#内置的特性之Obsolete
[Obsolete("过期了")]
public static void Test()
{
Console.WriteLine("Test");
}

[Obsolete("过期了",true)]
public static void Test()
{
Console.WriteLine("Test");
}

c#内置的特性之Conditional
使用方法如下
[Conditional("IsTest")]
public void Test()
{
Console.WriteLine("Test");
}

意思是如果定义了宏IsTest则对Test的调用会成功,如果未定义,则该方法的调用不会成功。注意:此时虽然调用不会成功,但是仍然会被编译到程序集中。
c#内置的特性之CallerFilePath,CallerLineNumber,CallerMemberName
这三个特性可以获取调用的所在文件,行数,以及方法名称。猛一看没什么用,但是在打log的时候我觉得还是非常有用的。
static void PrintOut(string message,[CallerFilePath] string fileName="",[CallerLineNumber] int lineNumber=0,[CallerMemberName] string methodName="")
{
Console.WriteLine("message:"+message);
Console.WriteLine("fileName:" + fileName);
Console.WriteLine("lineNumber:" + lineNumber);
Console.WriteLine("methodName:" + methodName);
}
c#内置特性之DebuggerStepThrough,加在方法上
调试的时候假如那个方法确定无误,加上这个特性,调试的时候可以跳过debug的单步调试
c#中自定义一个特性以及获取该特性的属性
定义一个特性
[AttributeUsage(AttributeTargets.Class)] //特性的应用范围
public class MyTestAttribute : System.Attribute
{
public string Description { get; set; }
public string VersionNumber { get; set; }
public int ID { get; set; }
}
将该特性加在类上,这里的特性会自动把Attribute尾去掉
[MyTest(Description = "aaa",ID = 1,VersionNumber = "3")]
public class Program
{
...
}
获取特性的属性
Program p = new Program();
MyTestAttribute attribute = (MyTestAttribute) p.GetType().GetCustomAttribute(typeof (MyTestAttribute)) ;
Console.WriteLine(attribute.Description);
很多用过spring的道友肯定知道注解在Java中的用法,特性在c#中的用法和在Java中是一样的。有时间我会用c#的特性实现一个简单的spring容器,来实现控制反转。以前用java实现过,但是不知道代码扔到哪里去了。还用java实现过简单的orm。代码也不知道扔到哪里去了!!所以一定要整理代码,整理总结!!!
作者:六道真君
链接:http://www.jianshu.com/p/93d0b99b52ac
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
c#中的特性的更多相关文章
- C#中的 特性 详解(转载)
本篇幅转载于:http://www.cnblogs.com/rohelm/archive/2012/04/19/2456088.html C#中特性详解 特性提供了功能强大的方法,用于将元数据或声明信 ...
- java 对象的this使用 java方法中参数传递特性 方法的递归
一.this关键字,使用的情形,以及如何使用. 1.使用的情形 类中的方法体中使用this --初始化该对象 类的构造器中使用this --引用,调用该方法的对象 2.不写this,调用 只要方法或 ...
- .net中的特性
本文来之:http://hi.baidu.com/sanlng/item/afa31eed0a383e0e570f1d3e 在一般的应用中,特性(Attribute,以称为属性)好像被使用的不是很多. ...
- Performance Tuning guide 翻译 || Performance Tuning Guide 11G中新增特性
CSDN 对格式支持比較弱.能够到http://user.qzone.qq.com/88285879/blog/1399382878 看一致的内容. Performance Tuning Guide ...
- C#中的特性 (Attribute) 入门 (二)
C#中的特性 (Attribute) 入门 (二) 接下来我们要自己定义我们自己的特性,通过我们自己定义的特性来描述我们的代码. 自定义特性 所有的自定义特性都应该继承或者间接的继承自Attribut ...
- C#中的特性 (Attribute) 入门 (一)
C#中的特性 (Attribute) 入门 (一) 饮水思源 http://www.cnblogs.com/Wind-Eagle/archive/2008/12/10/1351746.html htt ...
- Lithium中关键特性更新
Lithium中关键特性更新 1. Lithium特性更新概述 Lithium相对于Helium更新特性共27项,其中原有特性提升或增强13项,新增特性14项,如下表所示 特性类型 相对于Helium ...
- PHP中面向对象特性实现
PHP近些年来成为全球最流行的网页编程语言,该语言以弱类型.易兼容.门槛低.开发快.功能强著称,且听别人这么说,我在有了c和c#基础后学习PHP过程中也并不是很顺利,该语言的一些特殊的语法规则又是让我 ...
- PHP中Trait特性
Trait是自 PHP 5.4.0 起添加的一个新特性,是 PHP 多重继承的一种解决方案.例如,需要同时继承两个 Abstract Class, 这将会是件很麻烦的事情,Trait 就是为了解决这个 ...
随机推荐
- codeforces B. Bear and Strings 解题报告
题目链接:http://codeforces.com/problemset/problem/385/B 题目意思:给定一条只有小写英文组成的序列,需要找出至少包含一个“bear”的单词的子序列个数.注 ...
- PHP 中$_SERVER的用法
php编程中经常需要用到一些服务器的一些资料,我把常用的用高亮的方式贴出来,其余的放在后面.方便以后查阅$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERVER ...
- Sports
题目链接 : http://acm.hpu.edu.cn/problem.php?id=1184 或者 http://acm.nyist.net/JudgeOnline/problem.p ...
- 自适应布局all样式
/*css document*/@charset "utf-8"*{-webkit-tap-highlight-color:rgba(0,0,0,0); padding:0; ma ...
- Piggy-Bank(复习完全背包)
传送门 题目大意: 有一个存钱的储存罐,给你它存满钱之前和之后的重量,和几类硬币的面值和重量. 求装满储钱罐时最小能得到多少钱. 题解:完全背包变形. 因为要求最小 一开始赋值大数. code: #i ...
- 必须知道的八大种排序算法【java实现】
一.冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. ...
- opencv MatExpr MatOp
opencv提供了很多Mat的操作,其中涉及到两个重要的类:MatOp和MatExpr C++: MatExpr abs(const Mat& m) C++: void absdiff(Inp ...
- Java代码加密与反编译(一):利用混淆器工具proGuard对jar包加密
Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候.所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译.通 ...
- POJ - 2676 Sudoku 数独游戏 dfs神奇的反搜
Sudoku Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smalle ...
- eclipse + tomcat 开发环境配置
一. 下载tomcat和Eclipse 下载tomcat 下载地址:http://tomcat.apache.org/download-70.cgi 下载后解压如下图 下载eclipse 下载地址:h ...