[C#] 语法之Attribute
在c#中,定义类的成员,可以定义Property称为属性.Attribute就称为特性.
在FCL中,有内置的Attribute.如:
Condition[Attribute]:在什么条件可以调用.(只能作用于返回值为void的方法上)
Obsolete:方法弃用.支持禁用.
代码1:
class Program
{
static void Main(string[] args)
{
Func();
Console.ReadLine();
} [Obsolete("you can use Func to replace this",true)]
private static void Test()
{
Console.WriteLine("noooo");
} private static void Func()
{
Console.WriteLine("yesss");
}
}
class T
{
[Conditional("DEBUG")]
public static void M(string str)
{
Console.WriteLine("Method{0}", str);
}
}
内置Attribute
自定义Attribute:
代码2:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public class HelpAttribute : Attribute
{
public HelpAttribute(string str)
{
HelpStr = str;
}
public string Name { get; set; }
public string HelpStr { get; set; }
}
自定义Attribute
AttributeTargets.Class:作用目标只能是类.
AllowMultiple:是否可以在一个元素上多次作用特性.
Inherited:当目标被继承时,特性是否也继承.
反射获取类的Attribute信息:
代码3:
class Program
{
static void Main(string[] args)
{
var attrs = typeof(MyClass).GetCustomAttributes(false);
for (int i = ; i < attrs.Length; i++)
{
var attr = attrs[i] as HelpAttribute;
if (attr != null) Console.WriteLine(attr.HelpStr + attr.Name);
}
Console.ReadLine();
}
} [Help("good", Name = " class")]
class MyClass
{ }
反射获取特性信息
[C#] 语法之Attribute的更多相关文章
- jquery attribute$=value选择器 语法
jquery attribute$=value选择器 语法 作用:[attribute$=value] 选择器选取每个带有指定属性且以指定字符串结尾的元素. 语法:$("[attribute ...
- jquery attribute选择器 语法
jquery attribute选择器 语法 作用:[attribute] 选择每个带有指定属性的元素.可以选取带有任何属性的元素(对于指定的属性没有限制). 语法:$("[attribut ...
- for...in与点语法
语法 for...in语句循环一个指定的变量来循环一个对象所有可枚举的属性.如下所示 for (variable in object){ statements } 问题 在实际的使用过程中发现,在fo ...
- LDAP注入与防御解析
[目录] 0x1 LDAP介绍 0x2 LDAP注入攻击及防御 0x3 参考资料 0x1 LDAP介绍 1 LDAP出现的背景 LDAP(Lightweight Directory Access Pr ...
- HTML 学习笔记 JQuery(选择器)
学习前端也有一段时间了,今天终于进入到JQuery阶段了,对于新手来讲,JQuery的选择器类型之多 功能之强大实在不是一天两天能够记得完的.现在,就采用边学边记录的方式.以后要是忘了的话,也有一个地 ...
- IOS学习笔记 O1
第一章 Objective-C语言基础 一.OC语言与C语言的比较 C语言是一门面向过程的语言,而OC则是一门面向对象的语言. C语言文件默认保存格式为.c,OC语言默认保存格式为.m,两者头文件格式 ...
- Python2.5-原理之模块
此部分来自于<Python学习手册>第五部分 一.模块(21章) 模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用..模块往往对应于python程序文件.每个文件就是一个模 ...
- servlet&jsp高级:第四部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Xml 学习二
使用PHPDOM模型操作XML XML的树状结构: s 1.xml文档 1.1.创建DOM树 //创建DOM树$M = new DOMDocument('1.0','utf-8'); 1.2.加载 ...
随机推荐
- Redis 数据结构之Keys
这是Redis官方文档的keys列表 (1) set key value--设置某个键为某个值 (2) get key -- 获取设置的值 (3)del key -- 删除设置的键 (4)expir ...
- 将 Book-Crossing Dataset 书籍推荐算法中 CVS 格式测试数据集导入到MySQL数据库
本文内容 最近看<写给程序员的数据挖掘指南>,研究推荐算法,书中的测试数据集是 Book-Crossing Dataset 提供的亚马逊用户对书籍评分的真实数据.推荐大家看本书,写得不错, ...
- Base: 一种 Acid 的替代方案
原文链接: BASE: An Acid Alternative Pdf下载链接: Base 数据库 ACID,都不陌生:原子性.一致性.隔离性和持久性,这在单台服务器就能搞定的时代,很容易实现,但是到 ...
- LogViewer - 方便的日志查看工具
一个完整的程序日志记录功能是必不可少的,通过日志我们可以了解程序运行详情.错误信息等,以便更好的发现及解决问题. 日志可以记录到数据库.日志服务器.文件等地方,本文主要介绍文件日志. 文件日志通常是一 ...
- vim 多行注释消除注释,多行删除
进入可视化模式: Ctrl+v 继续进入编辑模式: shift+i 注释: shift+# 注释生效: ESC 取消注释 d 删除 选中全部字符块区域,使用方向键上下右: 然后,按一下d
- gradle 如何操作命令行
如题: 官方做法: task startApp(type: Exec){task -> workingDir mWorkingDirRoot commandLine 'cd'} 后来我看到这篇文 ...
- lua中常量的实现及表的深拷贝实现
废话:好久没在这里写博客了...主要原因是我买了个域名hanxi.info并在github上搭建了个人博客... lua中默认是没有c中的const常量的,在csdn上找到了一个使用setmetata ...
- 打包时Xcode报:此证书的签发者无效Missing iOS Distribution signing identity
问题描述 今天准备打包上传AppStore,结果Xcode报以下错误:Missing iOS Distribution signing identity for XXXXXX 查看证书后发现,Deve ...
- SQL Server Profiler:使用方法和指标说明
SQL Server Profiler的中文意思是SQL Server事件探查,一个Sql的监视工具,可以具体到每一行Sql语句,每一次操作,和每一次的连接.感觉这个工具的作用还是很大的,给大家分享一 ...
- Microsoft 2013 新技术学习笔记 一
有几年没有关注技术了,最近有点时间想把技术重新捡起来,借着重构手上的一个后台管理框架的机会将微软新的几种技术全部应用一下,从目的上来讲并没有希望能对涉及的技术有很深入的了解,所以这个系列的文章(篇幅不 ...