心影(LM)

导航

c# core api 自定义特性

来来来!和我一步一步做,没有思路的不用封装就在当前控制器做完所有操作就可以,熟悉熟悉自己封装去吧!

我对特性理解也不深,网上找了一堆资料自己试出来的,绝对可以优化我就入个门,仅供参考

特性是c#近几年出现的语法糖,个人平时用的比较多的就是日志,记录信息啥的,没啥底层理解。

1.创建一个实体类(当前控制器文件就行)

  /// <summary>
    /// 定义特性第一步
    /// </summary>
    [AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
    public class DebugInfo : Attribute
    {
        private int bugno;
        private String developer;
        private String lastTime;
        public String message;

        public DebugInfo(int bugno, string developer, string lastTime)
        {
            this.bugno = bugno;
            this.developer = developer;
            this.lastTime = lastTime;
        }

        public int BUGNO
        {
            get
            {
                return bugno;
            }
        }
        public String DEVELOPER
        {
            get
            {
                return developer;
            }
        }
        public String LASTTIME
        {
            get
            {
                return lastTime;
            }
        }
        public String MESSAGE
        {
            get
            {
                return message;
            }
            set
            {
                message = value;
            }
        }

    }

  2.上面就是添加的特性实体用来临时存储和返回特性接收的值,下面是使用特性,随便找个类扔到上面去,内部参数两种方式填写

             1)按照循序逗号隔开直接填写值

              2)直接对应名称填写

[DebugInfo(2019, "LiuYan", "1/17", message = "这是print方法")]
        public IActionResult Index()
        { 
            return View();
        }

  3.使用完了,咱们开始获取特性中的值,这里可以小小封装一下,你们自己搞吧!随便选一个可以触发的类

 #region 第三步获取特性信息
            Type t = typeof(HomeController);//特性所在类
            var method = t.GetMethod("Index");//特性标签方法
            DebugInfo ats = (DebugInfo)method.GetCustomAttribute(typeof(DebugInfo), true);//特性名称
            //获取反射得到的数据
            int bugNo = ats.BUGNO;
            String name = ats.DEVELOPER;
            String time = ats.LASTTIME;
            String message = ats.message;
//这就是值了 存个日志啥的不香么
            string data= ("\r\n" + bugNo + " " + name + " " + time + " " + message);
            #endregion

  勿看他人拿高薪,且看显示谁在拼

posted on 2020-08-04 10:02  心影(LM)  阅读(269)  评论(0编辑  收藏  举报