闲谈:没有系统的学过,偶尔看看,看的也不是很清楚。
却一直不明白,本来也不难,自己动手写了个示例。结果一目了然……
Attribute —— 标记
可以对方法、类等事务进行附着。增加属性。
下面以我见到最多的标记(这里先不说Serializable)使用案例 —— 权限
- 声明一个自己个MyAttribut类——存有字段(Role)、构造函数
- 自己写一个方法MyAction()(或者类)——给它加上你写的标记,通过构造函数调用,并传参
- 获取到当前登录的用户类型得到一个值role(例:"1")
- 获取MyAction()方法的标记attributes
- 验证:判断当前用户类型值(role)是否等于(或大于)attributes.Role
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //获取到标记。 6 //获取类的标记。typeof(Person).GetCustomAttributes(typeof(MyFirstAttribute), true); 7 var attributes = typeof(Program).GetMethod("MyAction").GetCustomAttributes(typeof(MyAttribute), true); 8 MyAttribute myAttribute = attributes[0] as MyAttribute; 9 10 Console.WriteLine("如果获取当前用户名=标记,表示可以方法可以访问。"); 11 Console.WriteLine("请输入你的用户名等级"); 12 string ss = Console.ReadLine(); 13 14 if (ss == myAttribute.Role) 15 { 16 Console.WriteLine(MyAction()); 17 } 18 else 19 { 20 Console.WriteLine("权限不够。"); 21 } 22 } 23 /// <summary> 24 /// 用户类型为1的才可以访问我。 25 /// </summary> 26 /// <returns></returns> 27 [My("1")] 28 public static string MyAction() 29 { 30 return "方法可以访问。"; 31 } 32 } 33 /// <summary> 34 /// 自己定义的标记。【权限标记】 35 /// </summary> 36 public class MyAttribute : Attribute 37 { 38 public string Role 39 { 40 get; 41 set; 42 } 43 public MyAttribute(string role) 44 { 45 this.Role = role; 46 } 47 }
时间: 2024-10-13 01:15:39