すでに提供されている再帰メソッドを呼び出すことで、再帰メソッドの作成を回避できます。
static string GetTypeName(Type type)
{
var codeDomProvider = CodeDomProvider.CreateProvider("C#");
var typeReferenceExpression = new CodeTypeReferenceExpression(new CodeTypeReference(type));
using (var writer = new StringWriter())
{
codeDomProvider.GenerateCodeFromExpression(typeReferenceExpression, writer, new CodeGeneratorOptions());
return writer.GetStringBuilder().ToString();
}
}
これには型の名前空間が含まれますが、アセンブリ参照は除外されることに注意してください。質問のタイプの場合、結果は次のようになります。
System.Collections.Generic.List<System.Collections.Generic.Dictionary<int, string>>
それが「何かのようなもの」に該当するかどうかは私には明らかではありませんList<Dictionary<int, string>>
。