.NET:什么时候实例化属性,我可以获得他们正在装饰的类型的引用吗?

时间:2009-08-20 12:02:46

标签: .net attributes

关于属性的两个问题:

  1. 何时实例化属性类?首次访问类型时,还是在执行开始时?
  2. 从属性类中,我可以找出属性被实例化的类型吗?
  3. 我的想法是,我想列出我的程序集中已应用了我的属性的所有类。我当然可以通过反射和检查迭代所有这些 - 但是如果属性可以在实例化时简单地附加到全局静态列表,那就更好了。

1 个答案:

答案 0 :(得分:12)

在应用程序启动时,属性会自动实例化。查看哪些类型(或任何IL元素)应用属性的唯一方法是迭代所有内容并逐个检查。因此,属性不能自动控制程序。

它们基本上是附加到某些东西的元数据。当反射实例化在运行时表示属性的属性类时,将调用它们的构造函数。只有当您请求反射时才会发生这种情况(通过Type.GetCustomAttributes方法。)