随笔-63  评论-48  文章-2 

.NET 特性Attribute

Attribute类

除了.NET内置提供的一些特性外,我们当然也可以自定义自己的Attribute。需要知道的中,所有自定义的Attribute都必须派生自类Attribute。在开发自定义的Attribute的时候,还有一点需要注意的是特性可以施加到不同的元素中,如方法,属性,类,参数等。有时候我们可能希望自定义的特性只允许施加到类中,这时还可以使用AttributeUsage限定特性的使用范围。

以下给出一个使用示例

 

using System; 
namespace AttTargsCS 


   
// 该Attribute只对类有效. 
   [AttributeUsage(AttributeTargets.Class)]
   
public class ClassTargetAttribute : Attribute 
   { 
    } 


   
// 该Attribute只对方法有效. 
   [AttributeUsage(AttributeTargets.Method)]
   
public class MethodTargetAttribute : Attribute 
   { 
    } 


   
// 该Attribute只对构造器有效。
   [AttributeUsage(AttributeTargets.Constructor)]
   
public class ConstructorTargetAttribute : Attribute 
   { 
    } 


   
// 该Attribute只对字段有效. 
   [AttributeUsage(AttributeTargets.Field)]
   
public class FieldTargetAttribute : Attribute
   {
   } 

   
  
// 该Attribute对类或者方法有效(组合). 
  [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method)]
   
public class ClassMethodTargetAttribute : Attribute
   {
    } 


   
// 该Attribute对所有的元素有效.
   [AttributeUsage(AttributeTargets.All)]
   
public class AllTargetsAttribute : Attribute 
  { 
   } 

   
//上面定义的Attribute施加到程序元素上的用法
   [ClassTarget]  //施加到类
   [ClassMethodTarget]//施加到类
   [AllTargets] //施加到类
   public class TestClassAttribute
   { 
      [ConstructorTarget] 
//施加到构造器
      [AllTargets] //施加到构造器
      TestClassAttribute()
      { 
       } 

      [MethodTarget] 
//施加到方法
      [ClassMethodTarget] //施加到方法
      [AllTargets] //施加到方法
      public void Method1()
      {
      }
     
      [FieldTarget] 
//施加到字段
      [AllTargets] //施加到字段
      public int myInt; 

      
static void Main(string[] args)
      { 
      } 
   }

posted on 2009-01-02 22:36 lhx 阅读(...) 评论(...) 编辑 收藏