当我尝试使用Roslyn SyntaxGenerator.IdentifierName
为基本类型创建标识符时,它会向Identifier.Text
添加转义。
var generator = SyntaxGenerator.GetGenerator(document);
// genericTypeArg.Identifier.ValueText = "@double"
var genericTypeArg = generator.IdentifierName("double");
// generic.Identifier.ValueText = "IEnumerable<@double>"
var generic = generator.GenericName("IEnumerable", genericTypeArg);
如何创建类型标识符而不进行转义?
编辑:
这是一种有效的测试方法吗?
var typeExp = typeSymbol.SpecialType == SpecialType.None
? _generator.IdentifierName(typeSymbol.ToDisplayString(symbolDisplayFormat));
: _generator.TypeExpression(typeSymbol.SpecialType)
var generic = _generator.GenericName("IEnumerable", typeExp);
答案 0 :(得分:1)
IdentifierName()
就是 - 标识符的名称。
您要求提供一个名为double
的标识符,它为您提供了有效的语法。
generator.TypeExpression(SpecialType.System_Double)