Как разобрать имена универсальных типов C #?

Как я могу разобрать C # -стиль универсальных имен типов в форматеList<int>&nbsp;или жеDictionary<string,int>&nbsp;или даже более сложныйDictionary<string,Dictionary<System.String,int[]>>, Предположим, что эти имена являются строками и могут фактически не представлять существующие типы. Он должен так же легко быть в состоянии разобратьBogusClass<A,B,Vector<C>>, Чтобы быть ясным, я не заинтересован в разборе внутренних имен типов .NET форматаList`1[[System.Int32]], но фактические имена типов C #, как они будут отображаться в исходном коде, с или без квалификаторов пространства имен с использованием точечной нотации.

Регулярные выражения отсутствуют, потому что это вложенные структуры. Я думал, что, возможно, конструктор System.CodeDom.CodeTypeReference проанализирует его для меня, так как он имеетstring BaseType&nbsp;а такжеCodeTypeReferenceCollection TypeArguments&nbsp;члены, но те, по-видимому, должны быть установлены вручную.

CodeTypeReference - это та структура, которая мне нужна:

class TypeNameStructure
{
    public string Name;
    public TypeNameStructure[] GenericTypeArguments;
    public bool IsGenericType{get;}
    public bool IsArray{get;} //would be nice to detect this as well

    public TypeNameStructure( string friendlyCSharpName )
    {
       //Parse friendlyCSharpName into name and generic type arguments recursively
    }
}

Существуют ли какие-либо классы в структуре для такого разбора имени типа? Если нет, то как бы я пошел на разбор этого?