5

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

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

4

3 回答 3

11

属性总是与反射一起使用。它们在编译期间被烘焙到类型的元数据中,读取它们的唯一方法是通过反射。当你想写一个类型并且你想将一些元数据与它相关联时,使用属性,这些元数据可以被这种类型的消费者使用。

于 2010-07-28T20:16:13.947 回答
7

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

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

于 2010-07-28T20:20:11.130 回答
3

首先创建你的属性

public class ImportableAttribute : Attribute
{

}

然后是一个带有使用 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);
于 2010-07-28T20:19:07.480 回答