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
勿看他人拿高薪,且看显示谁在拼
浙公网安备 33010602011771号