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

Vil*_*lx- 7 .net attributes

关于属性的两个问题:

  1. 何时实例化属性类?首次访问类型时,还是在执行开始时?
  2. 从属性类中,我可以找出属性被实例化的类型吗?

我的想法是,我想列出我的程序集中已应用了我的属性的所有类.我当然可以通过反射和检查来遍历所有这些 - 但是如果属性可以在实例化时简单地附加到全局静态列表,那么它会更好.

Meh*_*ari 12

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

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