原创  C#Attribute属性标签Demo 收藏

对于[]这个方括号始终很好奇这是一个何方妖物,查了一下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... ) | 编辑| 举报| 收藏

旧一篇:C#组件编程 | 新一篇:遍历容器内的控件

  • 发表评论
  • 评论内容:
  •  
Copyright © liushengpiaoxu
Powered by CSDN Blog