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があることを起こるということですプリミティブ(例えば二重)である場合、生成されるジェネリックは 'IEnumerable'になります。これをクリーンアップして 'double 'を返すために、generator.GenericName(" IEnumerable "、generator.IdentifierName(typeSymbol.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)))'を実行しようとしましたが、これは組み込みのキーワードをエスケープします。 –
LGreenberger
どうやってこれを書いて、印刷された型が組み込み型のキーワードか、最小限の修飾型のカスタム型を使用するようにしますか?ありがとう! – LGreenberger
元の投稿を編集して、私の提案したやり方がうまくいくかどうか尋ねました。 – LGreenberger