在 .Net 中,属性功能是在编译时还是运行时或两者都使用?能举几个例子吗?
最佳答案
大多数 仅在运行时使用。编译器使用的数量非常有限,包括:
[Conditional(...)]
- 省略每个构建符号的方法调用[Obsolete(...)]
- 发出警告/错误作为构建输出[Serializable]
- 写成 CLI 标志[Extension]
- 用于扩展方法[AttributeUsage]
- 影响属性的应用方式
-
编译器在创建程序集文件时会使用诸如 [AssemblyVersion]
、[AssemblyFileVersion]
等一系列内容,以及诸如 [InternalsVisibleTo]
影响可访问性。
此外,像 PostSharp 这样的工具会根据属性执行额外的编译后步骤。
编译器可能会添加一些其他属性到生成的类型/方法(用于匿名方法/类型、迭代器 block 等)。
关于c# - .Net 属性功能是在编译时还是在运行时或两者都使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2311719/