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
勿看他人拿高薪,且看显示谁在拼