zoukankan      html  css  js  c++  java
  • 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= ("
    " + bugNo + " " + name + " " + time + " " + message);
                #endregion
    

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

  • 相关阅读:
    分布式文件系统--->fastDFS
    varnish4.0缓存代理配置
    varnish4.0缓存代理配置
    varnish4.0缓存代理配置
    SDN 是什么
    SDN 是什么
    SDN 是什么
    Solidworks如何保存为网页可以浏览的3D格式
    github 的 配置SSH
    当一个实例被创建,__init__()就会被自动调用
  • 原文地址:https://www.cnblogs.com/BoKeYuan259/p/13431568.html
Copyright © 2011-2022 走看看