Не удается получить тип LinkedList`T с Type.GetType (строка) - PullRequest
1 голос
/ 23 февраля 2020

Я могу получить информацию о типах List<T>, Dictinary<TK, TVal> et c. по:

Type.GetType("System.Collections.Generic.List`1[System.String]")
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,System.String[]]")

Но не удается получить информацию о типе LinkedList<T>:

Type.GetType("System.Collections.Generic.LinkedList`1[System.String]") // Returns NULL
Type.GetType("System.Collections.Generic.LinkedList`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]") // Also returns NULL

Проверка сборки LinkedList<string>

typeof(LinkedList<decimal>).Assembly

Дает:

System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Использование. NET Стандарт 2.0.3.

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Очевидно, это потому, что List<> определяется в mscorlib.dll, который автоматически проверяется, в то время как LinkedList<> определяется в System.dll (из GA C).

Следовательно, вы должны явно обозначать имя сборки при ее динамической загрузке:

Type.GetType("System.Collections.Generic.LinkedList`1, System")

Из Документации :

Если тип находится в текущей выполняемой сборке или в Mscorlib.dll достаточно указать имя типа, соответствующее его пространству имен.

1 голос
/ 23 февраля 2020

Попробуйте указать полное имя сборки для System.Collections.Generic.LinkedList 1` типа

var type = Type.GetType("System.Collections.Generic.LinkedList`1[System.String], System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

или просто используйте имя сборки

type = Type.GetType("System.Collections.Generic.LinkedList`1[System.String], System");

List<T> является частью mscorlib.dll, является ли LinkedList<T> частью System.dll

Вы были почти здесь

Type.GetType("System.Collections.Generic.LinkedList`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]") // Also returns NULL

Но вы указали полностью квалифицированное имя для параметра типа generi c, тип System.String, а не для LinkedList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...