zoukankan      html  css  js  c++  java
  • NET 技术FAQ(六)属性

    6. 属性
    6.1 什么是属性?
    最少有两种类型的 .NET 属性。第一类我称其为 metadata 属性—它允许将某些数据附加到类或方法上。这些数据称为类的 metadata 的一部分,并且可以像类的其它 metadata 一样通过映射来访问。metadata 的另一种属性是 [serializable],将它附加到类上表示类的实例可以被串行化。
    [serializable] public class CTest {}
    另一种类型的属性是上下文属性。上下文类型的属性使用和 metadata 相似的语法,但实际上它们是不同的。上下文类型属性提供一种解释机制,通过这种机制,实例的活动和方法调用可以是预先处理和/或随后处理的。如果你了解 Keith Brown 的通用委托器你可能熟悉这种思想。
     
    6.2 我能创建自己的 metadata 属性吗?
    是的。简单地从 System.Attribute 导出一个类并将其标记为 AttributeUsage 属性。例如:
    [AttributeUsage(AttributeTargets.Class)]
    public class InspiredByAttribute : System.Attribute
    {
     public string InspiredBy;

     public InspiredByAttribute( string inspiredBy )
     {
      InspiredBy = inspiredBy;
     }
    }


    [InspiredBy("Andy Mc's brilliant .NET FAQ")]
    class CTest
    {
    }
    class CApp
    {
     public static void Main()
     {
                 object[] atts = typeof(CTest).GetCustomAttributes();
                 foreach( object att in atts )
                 if( att is InspiredByAttribute )
                  Console.WriteLine( "Class CTest was inspired by {0}", _
         ((InspiredByAttribute)att).InspiredBy  );
     }
    }
  • 相关阅读:
    工厂方法模式(2)
    单例模式(1)
    数组中任意位置添加数组
    六中设计模式中的原则总结
    开闭原则(设计模式6)
    迪米特法则(设计模式5)
    接口隔离原则(设计模式4)
    依赖倒置原则(设计模式3)
    里氏替换原则(设计模式原则2)
    相似图片搜索的原理(二) (转载)
  • 原文地址:https://www.cnblogs.com/shf/p/806719.html
Copyright © 2011-2022 走看看