有点小小的坦白,我从未写过属性类。我知道它们的作用是为类添加标志或额外功能。
能否给我一个快速的例子,不仅创建并应用属性到类中,而且还可以从另一段代码块中利用该属性。我所见过的利用任何形式的属性的代码样本都是使用反射,虽然我一直希望有一种不使用反射的方法来使用它们。
有点小小的坦白,我从未写过属性类。我知道它们的作用是为类添加标志或额外功能。
能否给我一个快速的例子,不仅创建并应用属性到类中,而且还可以从另一段代码块中利用该属性。我所见过的利用任何形式的属性的代码样本都是使用反射,虽然我一直希望有一种不使用反射的方法来使用它们。
属性(Attributes)总是与反射(reflection)一起使用。它们在编译时被嵌入到类型的元数据中,读取它们的唯一方式是通过反射。当您想要编写一个类型并希望将一些元数据与之关联,这些元数据可以被该类型的使用者使用时,就会使用属性。
首先创建您的属性
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);