【问题标题】:What is a CustomModifier?什么是自定义修饰符?
【发布时间】:2021-11-21 21:51:59
【问题描述】:

我正在尝试使用C# source generation,并且在多个地方看到了对Microsoft.CodeAnalysis.CustomModifier 的引用。例如,Microsoft.CodeAnalysis.IMethodSymbol 具有属性 RefCustomModifiersofficial documentation 并不是特别有用,而且在网上搜索也没有发现任何有用的信息。

CustomModifier 代表了哪些 C# 功能(如果有)?

【问题讨论】:

  • 不直接暴露在 C# 中,编译器根据需要生成它们以将选项传递给即时编译器。阅读ECMA-335,第 II.7.1.1 章

标签: c# code-generation roslyn-code-analysis


【解决方案1】:

我将自己回答这个问题,以便搜索相同信息的人更容易。

正如@HansPassant 所指出的,自定义修饰符由 CLI 规范解决。上述部分的一些亮点:

II.7.1.1 modreq 和 modopt
自定义修饰符,使用 modreq 定义 (“必需的修饰符”)和 modopt (“可选的修饰符”)是相似的 自定义属性(§II.21),除了修饰符是 签名而不是附在声明上。每个修饰符 将类型引用与签名中的项目相关联。

[剪辑]

例如,C 编程语言中的 const 限定符可以是 使用可选修饰符建模,因为方法的调用者 有一个 const 限定参数不需要以任何特殊方式对待它。 另一方面,应在 C++ 中复制构造的参数 应标有必需的自定义属性,因为它是 制作副本的调用者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2011-12-30
    • 2014-09-14
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多