タイトルで述べたように、メソッドの戻り値の型がジェネリックである場合、メソッドparamsがジェネリックであるかどうかをチェックしたいと思います。例えばRoslynでは、メソッドのパラメータ型/戻り型が汎用であるかどうかをチェックする方法は?
:
ここpublic ISet<string> Collect(MethodDeclarationSyntax method, SemanticModel semanticModel)
{
return method
.ParameterList
.Parameters
.Select(x => x.Type.ToString())
.ToImmutableHashSet();
}
私はジェネリックではありませんmethod
変数のためのparamsのすべてのタイプを、返すようにしたいが、私は結果をフィルタリングするためのAPIで何かを見つけることができません。
メソッドの戻り値の型が一般的であるかどうかを調べるときも同じ問題があります。
明確にするために、タイプが 'List'または 'Dictionary .KeyCollection'のようなものかどうかを調べようとしていますか? –
svick
いいえ - パラメータ/戻り値が汎用であるかどうかを知りたいだけです。例えば、以下のメソッドの場合: 'public static TValue GetOrDefault(TKeyキー)' 'key'パラメタが一般的で、戻り値' TValue'も総称であるかどうかを知りたいと思います。 –
これで、 'ITypeSymbol.TypeKind'にアクセスして私が探しているものを見つけることができました。それが最良のアプローチであるかどうかは分かりませんが、機能します。 –