几年前,Eric Lippert发表了一篇关于假设的 infoof 运算符的博客,它允许您在编译时而不是在运行时获取方法/属性信息。基本上是说它是一匹漂亮的小马,但不是独角兽......
我读了一些关于 Rosyln 在编译时重写代码的能力,使用 Roslyn 实现 infoof 会有多困难?
编辑:我认为这可能是一种获得 Eric 所说的他们正在考虑的所有内容的方法,但我应该对功能进行一些分解,以防万一。
以重构安全的方式,在编译时得到验证。就我个人而言,1 涵盖了我实际使用的大约 90%(用于获取来电者姓名的新来电者信息属性实际上可以覆盖大约 60%,但当然,如果有一种在方法内部和外部都有效的方法,那会更可取)。
您可以轻松地使用 Roslyn 将一个有效的 C# 代码重写为另一个有效的 C# 代码。但这并不意味着为语言添加扩展。
罗斯林做解析无效代码太(它有,如果你想使用它的智能感知上的不完整的线),但因为它是无效的,也不能保证它会做是正确的(因为它目前还不清楚究竟是什么“正确”意思)。另外,我认为它将用于的结构infoof对您来说不是很方便。
总结一下:这不是 Roslyn 的用途,这样做可能是个坏主意。但我认为使用 Roslyn 来做到这一点并非不可能。