我一直想要缩短(不 - using
- 污染)"内联"来自荒谬的属性是:
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
嗯,[InlineHint]
或[MyCompilerSvcs.InlineHint]
或类似的东西,既可以更快地输入,也可以更快地进行精神上的解析。
有没有办法真正做到这一点?现在唯一的#34;理智"我可以看到的选项是添加using System.Runtime.CompilerServices;
(在处理ASP.NET网站后面的代码时会很痛苦),添加更具体的using
别名(甚至更糟),或者保持长时间-form在可访问的位置进行复制粘贴。
提供this question from 2009并不过时,using
似乎是缩短属性引用大小的唯一方法(因为没有人为大型,多文件建议更多类似关键字的变体项目)。 This related question是从2010年开始的,并且还提出了using
技巧。
从2015年开始,有this question,但是参考了最终的装饰。因为我感兴趣的是编译器指令本身(以及基于性能的指令!)我怀疑运行时IL Emit可以做到这一点,以及一个"代码桥"在我看来,并不是很自然地扩展到编译器服务。
目前以C#4.5为目标,但不禁止使用较新的版本。
之前"编译器自动内联!",它仅对32 IL或更少的字节进行内联,并且内联提示会覆盖大小限制。还有其他选项对于更易于访问可能是有用的,例如NoOptimization,NoInline和Synchronized,所有这些我都非常希望不必键入荒谬的长属性来访问没有using
语句。< / p>
答案 0 :(得分:1)
您可以编写一个基于Roslyn的工具来执行此操作。这样可以应用具有您选择的名称的属性(某些短名称,例如AggInline
),该工具将发出实际的AggressiveInlining
属性和所需的using
指令。您可以看到ImmutableObjectGraph工具作为如何在Roslyn中执行此类操作的示例。