Wenn man einen Generischen Typ per reflektion abfragt dann bekommt man aus der FullName-Eigenschaft oftmals noch Versionsnummer usw. mitgeliefert. Das braucht man häufig aber nicht.
Angenommen wir haben eine Eigenschaft mit folgendem Typ deklariert und kompiliert:
Dictionary<List<string>, Dictionary<List<int>, List<double>>>
Daraus wird dann:
System.Collections.Generic.Dictionary`2[[System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.Dictionary`2[[System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.List`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Das folgende Snippet erzeugt Namen die in etwa folgendermaßen aussehen:
System.Collections.Generic.Dictionary`2[System.Collections.Generic.List`1[System.String],System.Collections.Generic.Dictionary`2[System.Collections.Generic.List`1[System.Int32],System.Collections.Generic.List`1[System.Double]]]
Diese können nach wie vor über CodeDomProvider in bspws. C# Code konvertiert werden.