簡體   English   中英

Roslyn是否內置了“簡化”?

[英]Are there built-in “simplifications” with Roslyn?

有沒有內置的方法可以使用Roslyn來執行C#編譯器所做的相同編譯時轉換,例如將迭代器,初始化器,lambdas,LINQ等轉換為基本的C#代碼?

Roslyn編譯器API旨在(除了將源代碼轉換為IL)之外,還可以構建源代碼分析和轉換工具。

但是,lambda和迭代器沒有始終使用source指定的轉換。 它們使用內部綁定節點抽象建模,其中包括只能使用IL表示的其他編譯器特定規則。

可以將LINQ轉換為C#中的源代碼,因為它被指定為源代碼轉換(無論編譯器是否真的以這種方式執行。)然而,沒有編譯器API專門執行此操作。 如果有,它可能會顯示為服務層API而不是編譯器API。

AFAIK,不,羅斯林沒有暴露這樣的東西。 但編譯器必須以某種方式進行這些轉換,因此您可以通過訪問某些internal方法來完成此操作。

當然,您可以使用Roslyn自己進行這些轉換,但這不是您所要求的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM