Wie kann ich generische C # -Typnamen analysieren?

Wie kann ich generische C # -Typnamen des Formats analysieren?List<int> oderDictionary<string,int> oder noch komplexerDictionary<string,Dictionary<System.String,int[]>>. Angenommen, diese Namen sind Zeichenfolgen und stellen möglicherweise keine vorhandenen Typen dar. Es sollte genauso einfach zu analysieren seinBogusClass<A,B,Vector<C>>. Klar, ich bin NICHT daran interessiert, interne .NET-Typnamen des Formats zu analysierenList`1[[System.Int32]], aber tatsächliche C # -Typnamen, wie sie im Quellcode erscheinen würden, mit oder ohne Namespace-Qualifikatoren in Punktnotation.

Reguläre Ausdrücke sind nicht verfügbar, da es sich um verschachtelte Strukturen handelt. Ich dachte, vielleicht würde der Konstruktor System.CodeDom.CodeTypeReference es für mich analysieren, da es hatstring BaseType undCodeTypeReferenceCollection TypeArguments Mitglieder, aber diese müssen anscheinend manuell eingestellt werden.

CodeTypeReference ist die Art von Struktur, die ich brauche:

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
    }
}

Gibt es irgendwelche Klassen im Framework, um diese Art der Typnamensanalyse zu erreichen? Wenn nicht, wie würde ich das analysieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage