Метод Type.GetType(string)
может возвращать тип по его имени, только если этот тип находится либо в текущей исполняемой сборке, либо в mscorlib.dll
. Для других типов необходимо указать assembly qualified name
.
Dictionary<TKey, TValue>
находится в mscorlib.dll
(для .NET Framework
), поэтому
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,System.String]");
смог вернуть свой тип.
SortedDictionary<TKey, TValue>
находится в System.dll
, поэтому
Type.GetType("System.Collections.Generic.SortedDictionary`2[System.String,System.String]");
вернул null
.
Чтобы получить тип SortedDictionary<TKey, TValue>
, нам нужно указать его assembly qualified name
:
Type.GetType(
"System.Collections.Generic.SortedDictionary`2[" +
"[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]," +
"[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]" +
", System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
Вот demo , который показывает