特性类使用和说明

@zgcwkj  2019年05月27日

特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签

在执行前调用

新建一个类,类名为 AttributeClass(你也可以自己想个)

继承 Attribute(必须继承 Attribute 类),代码如下:

namespace AttributeDemo
{
    public class AttributeClass : Attribute//特性类 必须继承 Attribute 类
    {
        //
    }
}

为特性类添加个入口:

namespace AttributeDemo
{
    public class AttributeClass : Attribute//特性类 必须继承 Attribute 类
    {
        public AttributeClass()//类的入口
        {
            //在这里写代码
        }
    }
}

为特性类添加在哪里可以使用的说明:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]//特性类能在什么地方使用
//[AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)}
namespace AttributeDemo
{
    public class AttributeClass : Attribute//特性类 必须继承 Attribute 类
    {
        public AttributeClass()//类的入口
        {
            //在这里写代码
        }
    }
}

然后就可以在你需要执行特性类的类名或者方法(函数)上填写上 [AttributeClass](中括号要加上)

在执行前调用并返回相关值或者数据

基于上面的基础,加一个 Get,Set 方法

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]//特性类能在什么地方使用
namespace AttributeDemo
{
    public class AttributeClass : Attribute//特性类 必须继承 Attribute 类
    {
        public AttributeClass()//类的入口
        {
            //在这里写代码
        }
        
        public AttributeClass(int size)//类的入口
        {
            this.Size = size;
        }
        
        public int Size { get; set; } = 0;
    }
}

然后就可以在你需要执行特性类的类名或者方法(函数)上填写上 [AttributeClass(size的值)](中括号要加上)

然后在执行的方法内部增加以下代码,把特性类的值取出来使用

Type type = typeof(特性类加在某个类或者函数的类名);
//Type type = typeof(this);//非静态类可以直接使用 this
foreach (AttributeClass attributeClass in attributeClasss)
{
    Console.WriteLine("特性类传出的数据{0}", attributeClass.Size);
}

至此,你已经学会怎么使用了!(其它部分请参考网上的其它资料)

相关类似推荐:Java 注解类使用和说明



添加新评论

Top