代码之家  ›  专栏  ›  技术社区  ›  Jimmy Hoffa

使用自定义属性最简单、最优雅的方法是什么

  •  3
  • Jimmy Hoffa  · 技术社区  · 14 年前

    所以说一点坦白,我从来没有写过属性类。我理解它们的目的是用标记或额外的功能来装饰类。

    有人能给我一个快速的例子,不仅创建和应用一个属性到一个类,而是利用另一个代码块的属性。我见过的唯一使用任何形式属性的代码示例是使用反射进行的,尽管我一直希望有一种不使用反射的方法。

    3 回复  |  直到 14 年前
        1
  •  8
  •   Darin Dimitrov    14 年前

    属性是 总是 与反射一起使用。它们在编译时被烘焙到类型的元数据中,读取它们的唯一方法是通过反射。当您希望编写一个类型,并且希望将一些元数据与之关联时,可以使用属性,而这些元数据可供此类型的使用者使用。

        2
  •  6
  •   Eric Lippert    14 年前

    使用来自另一个代码块的属性的最简单和最优雅的方法是 使用属性而不是属性 .

    http://blogs.msdn.com/b/ericlippert/archive/2009/02/02/properties-vs-attributes.aspx 讨论属性和属性之间的区别。

        3
  •  2
  •   Andreas    14 年前

    首先创建属性

    public class ImportableAttribute : Attribute
    {
    
    }
    

    然后是一个具有使用该属性的项的类

    [ImportableAttribute]
    public class ImportClass
    {
        [ImportableAttribute]
        public string Item {get; set;}
    }
    

    然后检查该属性是否使用该属性。可以通过类来完成。当然:

    PropertyInfo property = typeof(ImportClass).GetProperty("Item");
    
    if (property.IsDefined(typeof(ImportableAttribute),true))
    {
         // do something
    }
    

    课堂上:

    typeof(ImportClass).IsDefined(typeof(ImportableAttribute), true);
    
    推荐文章