C# 特性
特性:本身是一个类,如果是继承自Attribute 他就是特性
使用场景:几乎所有框架都用到了,MVC --- WebApi --EF -- IOC --AOP
C# 中在属性字段 方法 类上方使用“[ ]”来启用一个特性
系统自带特性
public class UseAttributeClass
{
//启用特性,这个特性表示此方法不再调试
[DebuggerStepThrough]
public void DoMethod()
{
Console.WriteLine("1111");
}
}
[Obsolete] //启用特性表示 弃用此类 会提示此类已过时
public class AttributeTestClass
{
}
[Obsolete] 可以传入参数:[Obsolete("提示信息",bool)] 第二个参数为bool值 如果为true 那么此类将直接无法使用 提示报错 给到提示信息
自定义特性 以及 调用
自定义特性标注上后 不会自动生效 需要使用反射来进行调用
通过反射查找类中的全部特性 ,再通过查找到的特性访问对应类 进行调用
object[]customAttributes = type.GetCustomAttributes(true);拥有两个参数 第一个参数为特性类型传入后会查找对应类型的特性,否则查找全部特性
//创建特性
class DefindAttribute:Attribute
{
public DefindAttribute(string showInfo)
{
Console.WriteLine(showInfo);
}
}
//使用时可以省略后续的Attribute
[Defind("这是自定义特性")]
class UseAttibute
{
}
//自定义特性的调用方法
class AttribteTest
{
Type type = typeof(UseAttibute);
object[]customAttributes = type.GetCustomAttributes(true);//拥有两个参数 第一个参数为特性类型传入后会查找对应类型的特性,否则查找全部特性
foreach(object customAttribute in customAttributes)
{
DefindAttribute defindAttribute = customAttribute as DefindAttribute;
if(defindAttribute!=null)
{
Console.WriteLine(defindAttribute.ShowInfo);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!