通过下列过程将属性应用到代码元素。
-
通过从 .NET Framework 导入属性的命名空间来定义新的属性或使用现有属性。
-
通过在紧邻代码元素之前放置属性来将该属性应用于代码元素。
每种语言都有自己的属性语法。在 C++ 和 C# 中,属性由方括号括起来,并且通过空白(可包括分行符)与元素分隔。在 Visual Basic 中,属性由尖括号括起来,并且必须处于同一逻辑行;如果需要加分行符,则可以使用行继续字符。在 J# 中,使用特殊注释语法附加属性。
-
为属性指定位置参数和命名参数。
位置参数是必需的,并且必须放在所有命名参数之前;位置参数对应于属性的构造函数之一的参数。命名参数是可选的,对应于属性 (Attribute) 的读/写属性 (Property)。在 C++、C# 和 J# 中,为每个可选参数指定 name=value,其中 name 是属性的名称。在 Visual Basic 中,指定 name:=value。
属性在您编译代码时被发送到元数据中,并可通过运行库反射服务用于公共语言运行库以及任何自定义工具或应用程序。
按照约定,所有属性名都以 Attribute 结尾。但是,某些以运行库为目标的语言(如 Visual Basic 和 C#)不要求指定属性的全名。例如,如果要初始化 System.ObsoleteAttribute,只需将其引用为 Obsolete 即可。
将属性应用于方法
下面的代码示例显示如何声明 System.ObsoleteAttribute,该属性将代码标记为过时。字符串 "Will be removed in next version" 被传递到该属性。当调用该属性所描述的代码时,该属性将产生编译器警告以显示所传递的字符串。
using System; public class Example { // Specify attributes between square brackets in C#. // This attribute is applied only to the Add method. [Obsolete("Will be removed in next version.")] public static int Add(int a, int b) { return (a + b); } } class Test { static void Main() { // This generates a compile-time warning. int i = Example.Add(2, 2); } }
在程序集级别应用属性
如果要在程序集级别应用属性,请使用 Assembly 关键字。下列代码显示在程序集级别应用的 AssemblyNameAttribute。
using System.Reflection; [assembly:AssemblyName("MyAssembly")]
应用该属性时,字符串 "MyAssembly" 被放到文件元数据部分的程序集清单中。可以使用 MSIL 反汇编程序 (Ildasm.exe) 或通过创建检索该属性的自定义程序来查看该属性。
相关推荐
c#中的特性(attribute)+反射的一个例子
C# 特性 Attribute
C#的Attribute
你是否对 c# attribute 感到不解,如在有一个类定义前加了一个[]是代表什么,这就是c# 的attribute ,这里有两个简单直观的实例,让你直观的、容易的理解attribute的用法,
c#特性(Attribute)简单示例,适合初学者
包含2篇attribute高级应用文章,以及相应的代码。 代码关键处,都有详细注释。 看过后,你会对attribute,context有更深刻的认识
【内容概要】:在C#中使用反射获得Attribute(特性)的设定值。 【涉及的知识点】:自定义Attribute、C#中的反射知识 【使用人群】:初级工程师,适合刚开始学习的人群 【使用场景及目标】:学习如何使用反射获取...
预定义特性 AttributeUsage 描述了如何使用一个自定义特性类。它规定了特性可应用到的项目的类型
【内容概要】:在C#中通过学习使用Attribute,实现一个简单的ORM框架。里面主要有两部分的内容,学习使用Attribute获得设定值;学习通过反射获取属性的值 【适应人群】:初级工程师。但需要对反射、Attribute有一定...
07.C# 知识回顾 - 特性 Attribute.pdf 07.C# 知识回顾 - 特性 Attribute.pdf 07.C# 知识回顾 - 特性 Attribute.pdf
基于如下的几个理由,需要为应用程序提供多个版本: 1:应用程序有体验版和完整功能版; 2:应用程序测试过程中需要完成一些自动化的操作;
c#标签特性简单例子可执行,对属性值进行运行时检测. 通过反射
public class JWAttribute : Attribute { public string param1 { get; set; } public string param2 { get; set; } public string paramDefault = "paramDefault"; } [JW(param1 = "JW-A")] public class A { ...
日常工作中,需要为程序集提供统计分析: 1:程序集方法数; 2:开发人员数目及各自所开发或REVIEW的方法数; 3:测试中,被标注有BUG的数目; 4:直接查看方法的IL代码; 鉴于以上统计的需要,特开发本EXE。
利用Attribute简化Unity框架IOC注入 例子还不错 想学习的人可以看看
Attribute标记属性_资料收集 Attribute 标记属性 影响编译 .net c#
C#反射特性 基础入门,对新手绝对有帮助。 其中得到小伙伴赵勇的指导和参照这篇文章: http://www.cnblogs.com/jyk/archive/2010/08/06/1793668.html
Attribute是C#的一种语言特性,用于为各种实体(class,field,property)附加一些说明性信息, 并且可以在运行时环境中检索这些信息(通过反射)。 所有的Attribute必须继承自Attribute类,按照约定,特性类的名称带...
C#特性,⼀个⾮常强⼤,但对于初学者来说⾮常难懂的功能。为什么在类的前加⼀个“[Serializable]”就可以实现对类的序列化,为什么⽅法 的前⾯加⼀个[DllImpot]就能为⾮托管动态链接库公开静态⼊⼝。今天我们来接开...
在C#中有两个属性,分别为Property和Attribute,两个的中文意思都有特性、属性之间,但是用法上却不一样,为了区别,本文暂把Property称为特性,把Attribute称为属性。 Attribute才是本文的主角,把它称为属性我觉得...