概述
特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。要设计你自己的自定义特性,无需掌握许多新的概念。 如果你熟悉面向对象的编程,并且知道如何设计类,那么你已经具备大部分所需知识。 自定义特性本质上是直接或间接派生自 System.Attribute的传统类。 与传统类一样,自定义特性包含用于存储和检索数据的方法。
实现方式
1、声明自定义特性,一个新的自定义特性应派生自 System.Attribute 类。
1
2
3
4
5
6
7
8
9
|
// 一个自定义特性 BugFix 被赋给类及其成员 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true )] public class DeBugInfo : System.Attribute |
2、构建自定义特性,让我们构建一个名为 DeBugInfo 的自定义特性,该特性将存储调试程序获得的信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
// 一个自定义特性 BugFix 被赋给类及其成员 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true )] public class DeBugInfo : System.Attribute { private int bugNo; private string developer; private string lastReview; public string message; public DeBugInfo( int bg, string dev, string d) { this .bugNo = bg; this .developer = dev; this .lastReview = d; } public int BugNo { get { return bugNo; } } public string Developer { get { return developer; } } public string LastReview { get { return lastReview; } } public string Message { get { return message; } set { message = value; } } } |
3、应用自定义特性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[DeBugInfo(45, "Zara Ali" , "12/8/2012" , Message = "Return type mismatch" )] [DeBugInfo(49, "Nuha Ali" , "10/10/2012" , Message = "Unused variable" )] class Rectangle { // 成员变量 protected double length; protected double width; public Rectangle( double l, double w) { length = l; width = w; } [DeBugInfo(55, "Zara Ali" , "19/10/2012" , Message = "Return type mismatch" )] public double GetArea() { return length * width; } [DeBugInfo(56, "Zara Ali" , "19/10/2012" )] public void Display() { Console.WriteLine( "Length: {0}" , length); Console.WriteLine( "Width: {0}" , width); Console.WriteLine( "Area: {0}" , GetArea()); } } |
以上就是C#如何创建自定义特性的详细内容,更多关于C#创建自定义特性的资料请关注服务器之家其它相关文章!
原文链接:https://mp.weixin.qq.com/s/IMHKuGQuo8BV0FpstknqAg