大数跨境
0
0

【C#&.Net】自定义Attribute的使用介绍以及使用场景

【C#&.Net】自定义Attribute的使用介绍以及使用场景 元讯趣编程
2022-03-31
1
导读:自定义Attribute的使用介绍以及使用场景

微信公众号:趣编程ACE
收集并分享日常.NET实战开发技巧,源码获取关注后回复 源码;
**如果觉得对您有帮助,欢迎关注

自定义Attribute的使用介绍以及使用场景

我们在日常开发中对于特性绝对不陌生,尤其是MVC里面的filter过滤器,下面我将采用一个Demo来展示自定义特性的基本用法

1 public class User
2 {
3        [UserAttribute("Test")]
4        public string? Name { getset; }
5        [UserAttribute("China")]
6        public string? Address { getset; }
7        [UserAttribute("Suzhou")]
8        public string? City { getset; }
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}

输出结果如下:



交流群:

 


【声明】内容源于网络
0
0
元讯趣编程
学习编程从入门到精通
内容 51
粉丝 0
元讯趣编程 学习编程从入门到精通
总阅读108
粉丝0
内容51