由于属性实际上只是附加到程序集的元数据,这是否意味着属性对象仅在请求时创建(例如当您调用GetCustomAttributes时)?
或者他们是在创建对象时创建的?
或者,由CLR的属性扫描创建对象时创建的前2个的组合?
从CLR到C#,第三版:
如果要构造属性对象,则必须调用
GetCustomAttributes或GetCustomAttribute.每次调用其中一个方法时,它都会构造指定属性类型的新实例,并根据源代码中指定的值设置每个实例的字段和属性.这些方法返回对已应用属性类的完全构造实例的引用.
所以是的,它们只是根据要求创建的.