繁体   English   中英

我可以使用Roslyn完成此C#语法转换吗?

[英]Can I use Roslyn to accomplish this C# syntax transformation?

关于使用Roslyn添加C#语法糖的两部分问题:

首先,是否可以使用Roslyn向C#中添加新语法,还是始终必须将其从有效C#转换为其他有效C#? 例如,我想做一些类似于VB.NET的XML文字:

XElement lvalue = <some><xml /></some>;

是否可以在编译时将其转换为:

XElement lvalue = new XElement("some", new XElement("xml")); // or whatever

其次,如果可能的话,用户看起来像什么? 我是否可以这样做,以便人们编写第一个表达式,却从不看到对第二个表达式的转换(它在编译时透明地发生)? 还是Roslyn语法转换必须作为一种IDE“重构建议”出现? 我不清楚Roslyn文档中的内容。

首先,是否可以使用Roslyn向C#添加新语法

不。

还是总是必须将其从有效的C#转换为其他有效的C#?

是的

Roslyn是C#/ VB分析引擎; 这些是它分析的唯一语言。 不是用于扩展C#或VB语言。

C#编译器是在相当宽松的许可下开源的。 如果要编写自己的版本,则当然可以派生存储库,并使解析器执行您喜欢的任何事情。

如果必须查看您提供的代码片段,则无需(不必解决更大的问题),但是您可以沿着与stackoverflow相似的路径进行本地化

您可以引入类似_x("<some><xml /></some>") ,但是在语法方面并没有太大的好处(因为您可以使用运行时方法来对此进行解析),但是您可以Roslyn进行了将其替换为要生成的确切代码的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM