对于[]这个方括号始终很好奇这是一个何方妖物,查了一下MSDN顿悟,特此写一些代码记录一下
首先Attribute是一个类,该类必须继承自Attribute并且命名规则也要用Attribute做后缀,下面我来写几行代码
1)新建一个类DeveloperAttribute
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing.Design;
namespace WindowsFormsApplication3
{
[AttributeUsage(AttributeTargets.All)]
public class DeveloperAttribute: Attribute
{
private string name;
private string level;
private bool reviewed;
public DeveloperAttribute(string name, string level)
{
this.name = name;
this.level = level;
this.reviewed = false;
}
public virtual string Name { get { return name; } }
public virtual string Level
{ get { return level; } }
public virtual bool Reviewed { get { return reviewed; }
set { reviewed = value; }
}
}
}
2)新建UserInfo类,并在其上添加 [Developer("zhangsan","5",Reviewed=true)]标签
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace WindowsFormsApplication3
{
[Developer("zhangsan","5",Reviewed=true)]
public class UserInfo
{
public UserInfo()
{
System.Reflection.MemberInfo info = typeof(UserInfo);
DeveloperAttribute att =
(DeveloperAttribute)Attribute.GetCustomAttribute(info, typeof(DeveloperAttribute));
if (att != null)
{
this.UserName = att.Name;
this.Level = att.Level;
this.IsChild = att.Reviewed;
}
}
private string _name;
public string UserName {
set { _name = value; }
get { return _name; }
}
public string Level { set; get; }
public bool IsChild { set; get; }
}
}
3)
调用以上代码
UserInfo u = new UserInfo();
this.label1.Text = string.Format("Name:{0},Level:{1},IsCHild:{2}", u.UserName, u.Level, u.IsChild.ToString());
4)注释掉 [Developer("zhangsan","5",Reviewed=true)]这一行重新调用
^_^结果出来了
发表于 @ 2009年05月14日 11:06:00 | 评论( loading... ) | 举报| 收藏