SyntaxGenerator.IdentifierName 转义最低限度限定的原始类型
SyntaxGenerator.IdentifierName escapes minimally qualified primitive types
当我尝试使用 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);
IdentifierName()
就是一个标识符的名称。
您要求一个名为 double
的标识符,它为您提供了一个有效的语法。
您需要 SpecialType
overload:
generator.TypeExpression(SpecialType.System_Double)
当我尝试使用 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);
IdentifierName()
就是一个标识符的名称。
您要求一个名为 double
的标识符,它为您提供了一个有效的语法。
您需要 SpecialType
overload:
generator.TypeExpression(SpecialType.System_Double)