使用 Roslyn C# 语法工厂时如何转义变量名?

How to escape variable name when using Roslyn C# Syntax Factory?

所以我正在使用 Roslyn SyntaxFactory 生成 C# 代码。

在使用 IdentifierName(string) 生成变量名时,有没有办法让我转义变量名?

要求:

API 文档的含义似乎是它需要一个有效的 C# 标识符,因此 Roslyn 不会为您提供转义机制。因此,您需要定义一个字符串转换以实现您想要的效果。

做这件事的方法是看看其他东西是如何做到的。查看 HTML 个实体,它们总是使用 & 引入。它们始终可以轻松区分,并且还有一种方法可以对文字 & 进行编码,这样您就不会限制可渲染字符集。或者考虑 C# 字符串如何允许您通过使用 \.

在字符串中包含字符串分隔符和其他特殊字符

您需要选择一个在 C# 标识符中有效的字符作为您的 'marker' 序列,该序列表示您要编码的非标识符字符之一,以及允许该字符的方法也被代表。然后为每个编码字符的标记之后的内容创建一个映射 table。如果你想做所有的 Unicode,最简单的方法可能是只使用 Unicode 代码点数字。生成的标识符可能不太易读,但在您的用例中可能并不重要。

一旦你有了一个 suitable 系统,编写一个实现它的字符串转换函数应该非常简单。