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

时间:2010-07-28 20:14:25

标签: c# attributes custom-attributes class-attributes

所以有点忏悔,我从未写过属性类。我理解它们的目的是用标志或额外的功能来装饰类。

有人可以给我一个简单的例子,不仅可以创建属性并将其应用于类,还可以使用其他代码块中的属性。我见过的唯一使用任何形式属性的代码示例都是通过反射来实现的,尽管我一直希望有一种方法可以在没有反射的情况下使用它们。

3 个答案:

答案 0 :(得分:8)

属性始终与反射一起使用。它们在编译期间被烘焙到类型的元数据中,读取它们的唯一方法是通过反射。当您想要编写类型并且想要将某些元数据与此类型的消费者使用时,可以使用属性。

答案 1 :(得分:6)

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

有关属性和属性之间差异的讨论,请参阅http://blogs.msdn.com/b/ericlippert/archive/2009/02/02/properties-vs-attributes.aspx

答案 2 :(得分:2)

首先创建属性

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);