最近在做项目中的时候遇到了一个很神奇的类,当时我看得瞬间蒙圈,后来看了下大神们的博客和查了下MSDN,是这么说的!
Attribute类:表示自定义属性的基类。
Attribute类:从网上查了一些资料后,稍微能看懂了。都说它说就好比是一个附着物,用来定义额外的信息以及属性。举个例子来说吧!我们做程序开发是时候,如何确定方 法是谁开发的呢?当然你也可以在方法上添加注释,用来表明这个方法是谁敲的,除此之外呢?还有其他方法吗?
这个时候这个类就派上用场了。通过继承此类,可以自定义一个属性类,然后附加的形式来为需要添加的类或者方法添加额外的属性、
Demo展示
/// <summary>
/// 自定义额外属性的类
/// </summary>
class ClassAttribute : Attribute
{
private string name { set; get; }
public ClassAttribute(string Name)
{
this.name = Name;
}
}
上面这个Demo就是自定义额外属性的类,那么如何利用和获取呢?
class Student ///默认第一个不赋值的为构造函数类型的赋值,走的是构造函数
{
[Class("Football")]
public string profession;
public string Profession
{
get { return profession; }
set { profession = value; }
}
}
大家看明白了吗?通过标签的形式,就可以为类、接口、方法等添加额外的属性。
那么这时候,很多人会问,我已经添加了,那么如何来读取我添加的额外的属性呢?
我自己当时用这个的类的时候 查了下Attribute类的API,里面有20多个GetCustomAttribute的方法重载,通过这个方法就可以读取定义的额外的属性。
//使用反射读取Attribute
System.Reflection.MemberInfo info = typeof(Student); //通过反射得到Student类的信息
ClassAttribute hobbyAttr = (ClassAttribute)Attribute.GetCustomAttribute(info, typeof(ClassAttribute));
if (hobbyAttr != null)
{
Console.WriteLine("学生姓名:{0}", hobbyAttr.Name);
}
上面就是通过调用GetCustomAttribute的方法来读取自定义额外的属性操作。下面一张图告诉这个类的使用方法!
总结
刚用这个类也有可能说的不太清楚,如果大家有什么好的建议可以给我留言,大家一起进步,以后在开发过程中难免有地方用到这个类,这样用起来更加的方便简洁。