C#简单的特性Attribute示例
作者:韩明剑
时间:2021-04-16
浏览:35
点赞:0

概述:通过一个简单的小例子来理解下特性

代码:

1、创建管理员特性

using System;

namespace T1
{
    class ManagerAttribute:Attribute
    {
        public string WebSite { get; set; }
        public bool IsAdmin { get; set; }
    }
}

2、创建管理员类并在Manager类和Name属性中使用第一步创建的特性

using System;

namespace T1
{
    [ManagerAttribute(WebSite = "pcxpcx.com", IsAdmin = false)]
    class Manager
    {
        [ManagerAttribute(WebSite = "www.pcxpcx.com",IsAdmin = true)]
        public static string Name { get; set; }
        public static int Age { get; set; }
    }
}

3、获取Manager类和Name属性的特性值

using System;

namespace T1
{
    class AttrMain
    {
        public static void Run()
        {
            System.Reflection.MemberInfo memberInfo = typeof(Manager);
            ManagerAttribute managerAttribute = (ManagerAttribute)Attribute.GetCustomAttribute(memberInfo, typeof(ManagerAttribute));
            
            Console.WriteLine("Manager类的特性");
            Console.WriteLine("类名:{0}",memberInfo.Name);
            Console.WriteLine("网址:{0}", managerAttribute.WebSite);
            Console.WriteLine("是否超级管理员:{0}", managerAttribute.IsAdmin);
            
            Console.WriteLine("----------------------------");

            System.Reflection.PropertyInfo propertyInfo = typeof(Manager).GetProperty("Name");
            ManagerAttribute managerPropertyAttribute = (ManagerAttribute)Attribute.GetCustomAttribute(propertyInfo, typeof(ManagerAttribute));

            Console.WriteLine("Name属性的特性");
            Console.WriteLine("属性名:{0}", propertyInfo.Name);
            Console.WriteLine("网址:{0}", managerPropertyAttribute.WebSite);
            Console.WriteLine("是否超级管理员:{0}", managerPropertyAttribute.IsAdmin);
        }
    }
}

4、展示执行结果

Manager类的特性
类名: Manager
网址:pcxpcx.com
是否超级管理员:False
----------------------------
Name属性的特性
属性名:Name
网址:www.pcxpcx.com
是否超级管理员:True

原创不易,转载请保留本站版权。