征求自定义特性和反射相关的实用小例子比如说自定义特性在编程中处个什么位子,我一直不太清楚.不知道用他可以实现些什么功能,并且有什么优势.现向大家征求这方面的使用例子,开发心得.注释越详细越好,视例子的质量给分(分不够继续追加!)

解决方案 »

  1.   

    是这个意思么?  protected void Page_Load(object sender, EventArgs e)
            {            Type t = typeof(A);
                System.Reflection.PropertyInfo[] ps =  t.GetProperties();
                foreach (System.Reflection.PropertyInfo p in ps)
                {
                    if (p.GetCustomAttributes(false).Length > 0)
                    {
                        foreach (object o in p.GetCustomAttributes(false))
                        {
                            if (o is MyPro)
                            {
                                Response.Write(p.Name + " =============");
                            }
                        }
                    }
                }
                
        }   public class A
        {
            string _S1;
            string _S2;        public string S1
            {
                get
                {
                    return _S1;
                }
                set
                {
                    _S1 = value;
                }
            }        [MyPro]
            public string S2
            {
                get
                {
                    return _S2;
                }
                set
                {
                    _S2 = value;
                }
            }
        }    public class MyPro : Attribute
        { 
            
        }
      

  2.   

    http://blog.csdn.net/xiaolei1982/archive/2008/04/15/2294364.aspx
      

  3.   


        //定义一个可以使用在类上面的特性类。
         //用这个特性可以在类上做标记,这里是做一个代码检查的标记
        [AttributeUsage( AttributeTargets.Class)]
        public class CodeCheckerAttribute : Attribute
        {
            private string reviewer;  //检查代码的人
            private string date;      //检查时间
            private string comment;   //注释        public CodeCheckerAttribute(string reviewer, string date)
            {
                this.reviewer = reviewer;
                this.date = date;
            }        public string Reviewer
            {
                get { return this.reviewer; }
            }
            public string Date
            {
                get { return this.date; }
            }
            public string Comment
            {
                get { return this.comment; }
                set { this.comment = value; }
            }
        }    //使用特性标记这个类
        [CodeChecker("Jeff", "2008-7-19", Comment="not completed")]
        public class MyClass
        {
            public MyClass(){ }
        }
        //我想知道某个类的代码谁检查过没?利用反射得到这些信息。
        private void button1_Click(object sender, EventArgs e)
        {
            System.Reflection.MemberInfo info = typeof(MyClass);
            CodeCheckerAttribute att = (CodeCheckerAttribute)Attribute.GetCustomAttribute(info, typeof(CodeCheckerAttribute));
            if (att != null)
            {
                string ss = att.Reviewer + '\n' + att.Date + '\n' + att.Comment;
                MessageBox.Show(ss);
            }
        }
      

  4.   

    反射:http://www.cnblogs.com/AXzhz/archive/2006/11/01/546493.html
    自定义特性:http://www.cnblogs.com/zhouyinhui/archive/2006/10/02/520240.html
      

  5.   

    反射一般的使用方式就是你能够取得类或者方法的字符串,就可以通过反射去调用这个方法了。
    至于自定义特性:
    http://www.cnblogs.com/thinhunan/archive/2005/11/30/287648.html
    去自己看看这个帖子,还是比较经典的
      

  6.   

    网上太多了!!
    cnblog看看!!
      

  7.   

    这段代码的意思是:获取类A中用MyPro标记的属性的名称.是这样吗?
    但是为什么要这样用呢...还是没发现这种用法的优势.
      

  8.   

    我理解这段代码实现的作用是:在定义类时通过自定义特性来附加上一些信息用来描述这个类.这些信息是否放在codecheckerattribute生成的实例中呢,还有就是如果多个类都采用类MyPro标记,那么后一个用MyPro
    标记的类中的信息是否会覆盖前一个用MyPro标记的信息
    [MyPro(x,x,x=x)]
    class A
    {
    ...
    }
    [MyPro(xx,xx,xx=xx)]
    class B
    {
    ...
    }
    是否会存在用反射获取类A中的信息,得到的却是类B中的信息(覆盖).
    不知道这样的理解是否正确..
      

  9.   


    首先A和B的区分有很多方法,
    2.如果不能区分,Myrpo这个自定义属性也可以加参数的.
      

  10.   

    莫非用 MyPro标记的类,CodeCheckerAttribute都会为他们生成不同的实例?
    问题是我不知道这中技巧在编程过程中在哪个领域用的比较频繁.大家能不贴些
    代码给我.....