有哪些特点?
[过时("不要使用无参数构造函数",true)]放在方法上,方法不能使用。
[Serializable]放在类的顶部。此类可用于序列化和反序列化。
在命名空类、方法、属性、字段和枚举时使用括号[]
自定义属性,它是一个类:它必须继承属性或属性的一般类
公共类大小属性:属性//这是一个自定义属性
{
public SizeAttribute()
{
控制台。WriteLine("这是SizeAttribute的构造函数");
}
}
此功能已创建
在其他班级,如学生班
[SizeAttribute] //在类上写入属性
公共班级学生
{
[SizeAttribute] //在属性上写入属性
public int Id { setget}
公共字符串名称{ set获取}
[SizeAttribute] //在方法上写入属性
公共void Show()
{
控制台。写线(“显示”)
}
}
当然,特征也可以有一种方式来描述自己的特征
就是写在特征上
[属性用法(属性目标。All,AllowMultiple =false,Inherited =true)]
公共类大小属性:属性
{
}
//表示当前特性包含的所有类型都可以使用,只能单独使用,并且可以继承
特征:
1.当程序被编译和执行时,特性和注释的效果是相同的,没有任何区别
2.编译后的特征是元数据,特征只有反映出来才能使用。
3.功能可以做很多功能,比如权限检测、属性验证、封装枚举等。
4.要素是一个类,可以用作标记元素。编译时在元数据中生成,平时不影响程序运行,除非通过反射主动搜索。
可以获得一些额外的信息和操作,提供了更丰富的扩展空。功能可以在不损坏类型包的情况下添加附加功能。
例:有一个学生班,希望增加的学生不能少于12岁,20岁以上有特色
//学生班
公共班级学生
{
public int Id { get设置;}
公共字符串名称{ get设置;}
public int Age { get设置;}
[过时(“不要使用无参数构造函数”,true)] //这个特性是不能使用无参数构造函数
公立学生()
{ }
公共学生(整数,字符串名,整数)
{
这个。Id = id
这个。Name = name
[ControlAgeAttribute (_ vmin = 12,_ VMAX = 30)]//要判断年龄,如果年龄小于20且大于12,请在该属性上放置以下用户定义的特征。
这个。年龄=年龄;
}
公共void Show()
{
控制台。WriteLine("此show方法");
}
}
//年龄控制特征:特征命名标准——属性随名
公共类控件属性:属性
{
public int _ vMin { get设置;}//最低年龄
public int _ vMax { get设置;}//最大年龄
public bool CompareAge(int age)
{
返回年龄>。_vMin &。& amp年龄<。_vMax?true:false;//
}
}
//反射使用特性-使用静态方法
公共静态类管理
{
公共静态布尔比较管理(本学生学习)
{
bool结果= false
type type type = type of(stu);//首先获取类型
ProperyInfo prop = type。年龄。//通过反射获取年龄属性
If (prop。已定义(类型为(ControlAgeAttribute),true)//确定当前属性是否具有ControlAgeAttribute属性。
{
控件属性=(控件属性)属性。GetCustomAttribute(type of(controlage Attribute),true);
//获取特征
结果=属性。CompareAge(stu。年龄);
返回结果;//获取结果并返回
}
返回结果;
}
}
//在控制台Main方法中执行
静态void Main(字符串[]参数)
{
学生学生=新生(12,“哈哈哈”,15);
控制台。WriteLine(学生。CompareAgeManage());//15在12到20之间,所以是True
}
原始链接:
https://www.cnblogs.com/Rookieflying/p/10372270.html
版权声明:本文收集自网友或由网友提供。如有侵权,请告知版主或留言,微信官方账号立即删除。
1.《attributeusage .Net 特性 attribute 学习 ----自定义特性》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《attributeusage .Net 特性 attribute 学习 ----自定义特性》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/1506438.html