0
当我尝试使用Roslyn SyntaxGenerator.IdentifierName
为基元类型创建标识符时,它将转义添加到Identifier.Text
。SyntaxGenerator.IdentifierName转义最低限定基元类型
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);
的事情是,我从一个ITypeSymbol获取类型的信息,如果我做'generator.GenericName(“IEnumerable的”,typeSymbol)'和typeSymbol恰好是一个基元(例如double),那么通用创建的将是'IEnumerable'。为了清理这个,所以我只是回到'double',我试图做'generator.GenericName(“IEnumerable”,generator.IdentifierName(typeSymbol.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)))',但这个转义内置关键字。 –
LGreenberger
那么,我该如何编写这个,以便打印的类型使用内置类型的关键字或自定义类型的最低限定格式?谢谢! – LGreenberger
我编辑了原文,询问我建议的方式是否可行。 – LGreenberger