簡體   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