在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的更多相关文章

  1. jquery attribute$=value选择器 语法

    jquery attribute$=value选择器 语法 作用:[attribute$=value] 选择器选取每个带有指定属性且以指定字符串结尾的元素. 语法:$("[attribute ...

  2. jquery attribute选择器 语法

    jquery attribute选择器 语法 作用:[attribute] 选择每个带有指定属性的元素.可以选取带有任何属性的元素(对于指定的属性没有限制). 语法:$("[attribut ...

  3. for...in与点语法

    语法 for...in语句循环一个指定的变量来循环一个对象所有可枚举的属性.如下所示 for (variable in object){ statements } 问题 在实际的使用过程中发现,在fo ...

  4. LDAP注入与防御解析

    [目录] 0x1 LDAP介绍 0x2 LDAP注入攻击及防御 0x3 参考资料 0x1 LDAP介绍 1 LDAP出现的背景 LDAP(Lightweight Directory Access Pr ...

  5. HTML 学习笔记 JQuery(选择器)

    学习前端也有一段时间了,今天终于进入到JQuery阶段了,对于新手来讲,JQuery的选择器类型之多 功能之强大实在不是一天两天能够记得完的.现在,就采用边学边记录的方式.以后要是忘了的话,也有一个地 ...

  6. IOS学习笔记 O1

    第一章 Objective-C语言基础 一.OC语言与C语言的比较 C语言是一门面向过程的语言,而OC则是一门面向对象的语言. C语言文件默认保存格式为.c,OC语言默认保存格式为.m,两者头文件格式 ...

  7. Python2.5-原理之模块

    此部分来自于<Python学习手册>第五部分 一.模块(21章) 模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用..模块往往对应于python程序文件.每个文件就是一个模 ...

  8. servlet&jsp高级:第四部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. Xml 学习二

    使用PHPDOM模型操作XML XML的树状结构: s 1.xml文档 1.1.创建DOM树 //创建DOM树$M = new DOMDocument('1.0','utf-8');   1.2.加载 ...

随机推荐

  1. arcgis server10.1注册服务——避免在发布服务中拷贝数据

    之前用的arcgis10.1前的版本,后来换成10.1还有点不习惯,变化挺多的.发布服务过程中,进行分析的时候,其中有一项提醒:xxx图层没有注册到服务,很纳闷,为什么会有这种提示,不管,点击发布,会 ...

  2. [Aaronyang] 写给自己的WPF4.5 笔记22 [3d交互与动画 3/4]

    OK,前面我们的3d模型都比较囧啊,最近也看了一点ZAM了解了一下,大致至少可以做个简单的模型用来演示. 1.交互,动起来的思路 ①修改Model3D对象的变换 ②修改应用于ModelVisual3D ...

  3. 理解TCP为什么需要进行三次握手(白话)

    原文地址:http://www.cnblogs.com/yuilin/archive/2012/11/05/2755298.html 首先简单介绍一下TCP三次握手 在TCP/IP协议中,TCP协议提 ...

  4. hive中grouping sets的使用

    hive中grouping sets 数量较多时如何处理?    可以使用如下设置来 set hive.new.job.grouping.set.cardinality = 30; 这条设置的意义在于 ...

  5. 生成二维码 打上自定义logo

    private void RenderQrCode(string Code) { try { string level = "Q"; string url = ZConfig.Ge ...

  6. Servlet3.0学习总结——基于Servlet3.0的文件上传

    Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...

  7. 通过微信查找SAP TCODE代码

    输入T-CODE查询作用: (包含了16000+ 个SAP T-CODE),扫码关注后可以体验效果 再也不用去记那么多T-CODE用途了 还不试试看 输入关键词:"利润中心" &q ...

  8. CLR via C# 提纲

    第I部分 CLR基础第1章 CLR的执行模型 31.1 将源代码编译成托管模块 31.2 将托管模块合并成程序集 61.3 加载公共语言运行时 81.4 执行程序集的代码 101.4.1 IL和验证 ...

  9. vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏

    其实很久没有写程序了,国庆难得有空闲,写了个游戏辅助机器人,程序写好能用后本想把UI控件放到GroupBox里归下分类,美化下界面,结果一运行报“尝试读取或写入受保护的内存.这通常指示其他内存已损坏” ...

  10. 学习使用:before和:after伪元素

    如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注.特别是在Nicolas Gallagher的博客中,后期运用了很多伪类元 ...