微信公众号:趣编程ACE
收集并分享日常.NET实战开发技巧,源码获取关注后回复 源码;
**如果觉得对您有帮助,欢迎关注
自定义Attribute的使用介绍以及使用场景
我们在日常开发中对于特性绝对不陌生,尤其是MVC里面的filter过滤器,下面我将采用一个Demo来展示自定义特性的基本用法
1 public class User
2 {
3 [UserAttribute("Test")]
4 public string? Name { get; set; }
5 [UserAttribute("China")]
6 public string? Address { get; set; }
7 [UserAttribute("Suzhou")]
8 public string? City { get; set; }
9}
首先有这样一个User类,我们在每个属性上加了一个自定义特性UserAttribute,传递一个参数,是对属性的基本描述。其中UserAttribute继承自Attribute特性,如下所示:
1 public class UserAttributeAttribute : Attribute
2 {
3 public readonly string _attributeName;
4
5 public UserAttributeAttribute(string attributeNamae)
6 {
7 this._attributeName = attributeNamae;
8 }
9}
类名=自定义特性名+Attribute,然后这个类继承Attribute,通过构造函数接收传递的参数值。
下面我们在Main函数里面获取我们自定义的特性名
1static void Main(string[] args)
2{
3 //Console.WriteLine("Hello World!");
4 var properties= typeof(User).GetProperties(); // User类里面所有的属性集合
5 foreach (var prop in properties)
6 {
7 Console.WriteLine($"Prop name is {prop.Name}"); // 单个属性的属性名
8 if(Attribute.IsDefined(prop,typeof(UserAttributeAttribute)))
9 {
10 //如果属性名定义了特性 那么就可以按下面方法输出特性内容
11 Console.WriteLine($"Attribute Name is {prop.GetCustomAttribute<UserAttributeAttribute>()._attributeName}");
12 }
13 }
14}
输出结果如下:

交流群:


