• 自定义特性的简单用法


    特性简述:

      c#中的特性,是给编码中的代码添加一些数据,也可以理解为说明。例如:给类添加个等级信息,给方法添加个编码日期等等。它必须继承自System.Attribute类或其派生类。

      有些特性类是具备触发条件的,例如ASP.NET MVC Framework中Action Filter中的AuthorizeAttribute,它就有自己的触发条件,可以酌情重写以下方法。

        OnActionExecuting – 在controller action执行之前调用

        OnActionExecuted – 在controller action执行之后调用
        OnResultExecuting – 在controller action result执行之前调用
        OnResultExecuted – 在controller action result执行之后调用

      这东西,在代码被框架调用时,很有用,平时编程意义不大。

    例:

      编写一个特性TestA:

    1 class TestA:Attribute
    2     {
    3         int power;
    4         public int Power
    5         {
    6             get { return power; }
    7             set { power = value; }
    8         }
    9     }

    该特性仅仅设定一个整数,表示一段代码的权重(YY的)

    编写两个类(其实内容一样),分别给出不同的权重:

    1 [TestA(Power=100)]
    2     class TestClass1
    3     {
    4         public string Name { get; set; }
    5         public int Age { get; set; }
    6     }

    还有一个

    [TestA(Power = 50)]
        class TestClass2
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

    在主方法中可以取出这两个类的权重:

     1 static void Main(string[] args)
     2         {
     3             var myclass1 = new TestClass1();
     4             var myclass2 = new TestClass2();
     5             var as1 = myclass1.GetType().GetCustomAttributes(typeof(TestA), false);
     6             var as2 = myclass2.GetType().GetCustomAttributes(typeof(TestA), false);
     7             Console.WriteLine(((TestA)as1[0]).Power);
     8             Console.WriteLine(((TestA)as2[0]).Power);
     9             Console.ReadKey();
    10         }

    运行结果:

     总结:例子看似没什么意义,但如果调用类的是框架,就可以根据特性做很多事情。作为普通程序员,对其有一定了解,至少有助于日后阅读代码。

  • 相关阅读:
    获取项目路径
    Form提交时隐藏Token验证
    属性路由参数约束
    使用Cookie来统计浏览次数,当天重复刷新不增加
    图片上传预览 支持html5的浏览器
    icheck.min.js 选中效果
    bootstrap-modal.js 居中问题
    七十二、SAP中内表的修改,添加条件语句,多条目修改
    七十一、SAP中内表的修改,改一行数据,或一行的某个字段
    七十、SAP中内表批量指定位置插入
  • 原文地址:https://www.cnblogs.com/wanjinliu/p/12048247.html
Copyright © 2020-2023  润新知