关于属性的两个问题:
我的想法是,我想列出我的程序集中已应用了我的属性的所有类。我当然可以通过反射和检查迭代所有这些 - 但是如果属性可以在实例化时简单地附加到全局静态列表,那就更好了。
答案 0 :(得分:12)
在应用程序启动时,属性不会自动实例化。查看哪些类型(或任何IL元素)应用属性的唯一方法是迭代所有内容并逐个检查。因此,属性不能自动控制程序。
它们基本上是附加到某些东西的元数据。当反射实例化在运行时表示属性的属性类时,将调用它们的构造函数。只有当您请求反射时才会发生这种情况(通过Type.GetCustomAttributes
方法。)