Как Тип. GetType работает, когда дали частично квалифицированное имя типа?

В многочисленных местах делают я встречаюсь с частично квалифицированными именами типов формы FullTypeName, AssemblyName, т.е. как Type.AssemblyQualifiedName только без версии, культуры и publicKeyToken спецификаторов.

Мой вопрос состоит в том, как можно преобразовать его в соответствующее Type в минимуме усилия? Я думал это Type.GetType делает задание, но увы, оно не делает. Следующий код, например, возвраты null:

Type.GetType("System.Net.Sockets.SocketException, System");

Конечно, если я определяю полностью определенное имя, оно действительно работает:

Type.GetType("System.Net.Sockets.SocketException, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

Большое спасибо.

21
задан mark 2 March 2010 в 23:17
поделиться

2 ответа

Если DLL, в которой она находится, еще не загружена в домен приложения (например, вы ее использовали), вам нужен полный путь вот так, если он уже загружен, он может найти его в более короткой версии.

Чтобы ответить на ваш вопрос: вторая версия всегда работает, придерживайтесь ее, и у вас будет один способ побеспокоиться.

8
ответ дан 29 November 2019 в 20:21
поделиться

Код, работающий с короткой формой:

    Assembly a = Assembly.LoadWithPartialName(assemblyName);
    Type t = a.GetType(typeName);

, но LoadWithPartialName не рекомендуется, поэтому я думаю, вам следует придерживаться длинной формы.

2
ответ дан 29 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: