C# 特性

互联网 2022/6/29 9:54:01

特性:本身是一个类,如果是继承自Attribute 他就是特性 使用场景:几乎所有框架都用到了,MVC --- WebApi --EF -- IOC --AOP C# 中在属性字段 方法 类上方使用“[ ]”来启用一个特性 系统自带特性 public class UseAttributeClass {//启用特性,这个特性表示此方法不再调…

特性:本身是一个类,如果是继承自Attribute 他就是特性

使用场景:几乎所有框架都用到了,MVC --- WebApi --EF -- IOC --AOP

C# 中在属性字段 方法 类上方使用“[ ]”来启用一个特性

系统自带特性

public class UseAttributeClass
{
    //启用特性,这个特性表示此方法不再调试
    [DebuggerStepThrough]
    public void DoMethod()
    {
        Console.WriteLine("1111");
    }
}
[Obsolete]  //启用特性表示 弃用此类 会提示此类已过时  
public class AttributeTestClass
{
    
}

[Obsolete] 可以传入参数:[Obsolete("提示信息",bool)] 第二个参数为bool值 如果为true 那么此类将直接无法使用 提示报错 给到提示信息

自定义特性 以及 调用

自定义特性标注上后 不会自动生效 需要使用反射来进行调用

通过反射查找类中的全部特性 ,再通过查找到的特性访问对应类 进行调用

object[]customAttributes = type.GetCustomAttributes(true);拥有两个参数 第一个参数为特性类型传入后会查找对应类型的特性,否则查找全部特性

//创建特性
class DefindAttribute:Attribute
{
    public DefindAttribute(string showInfo)
    {
        Console.WriteLine(showInfo);
    }
}

//使用时可以省略后续的Attribute
[Defind("这是自定义特性")]
class UseAttibute
{
    
}
//自定义特性的调用方法
class AttribteTest
{
    Type type = typeof(UseAttibute);
    object[]customAttributes = type.GetCustomAttributes(true);//拥有两个参数  第一个参数为特性类型传入后会查找对应类型的特性,否则查找全部特性
    foreach(object customAttribute in customAttributes)
    {
        DefindAttribute defindAttribute = customAttribute as DefindAttribute;
        if(defindAttribute!=null)
        {
            Console.WriteLine(defindAttribute.ShowInfo);
        }
    }
}
随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[C# 特性]http://www.zyiz.net/tech/detail-331796.html

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>