谁有通俗易懂的事例来说明下特性怎么定制究竟是什么用处呢???????

解决方案 »

  1.   

    先理解反射
    Attributes是一种新的描述信息,使用attributes来定义设计期信息,还用attributes定义运行时信息
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false )] public class HelpAttribute : Attribute 
    {}
      

  2.   

    比如说,你想写一个插件系统。你可以定义一种特性。将一个库中可以作为插件类的类标记出来。一个库里面可能有3个类:Plugin1 Plugin2 Helper。那么主程序需要识别哪些是插件的功能,哪些类虽然存在,但是只是内部的辅助类。特性可以像“备注”那样,为反射调用者提供关于类或者方法的更多信息。
      

  3.   

    C#的特性给以用于各种类型成员。C#里提供了一些特性,比如作用于某个类的序列化特性等。当然了也可以自定义特性。其实特性就是一个类,只不过要继承自System.Attribute,而且特性名还要以Attribute结尾。[AttributeUsage(AttributeTargets.Class)]//表示该特性只能用于修饰类
    public class HelpAttribute : Attribute 

        public HelpAttribute(string description) 
        { 
            m_Description = description; 
        } 
        private string m_Description; 
       
        public String Description 
        { 
            get{ return m_Description; } 
        } 
    }//现在就可以用自定义的特性修饰类了[Help("This is a demo!")]//编译器会自动在Help后加上Attribute
    public class test
    {
    ...
    }//然后就可以利用反射机制查询test类的Help特性了。
    public class