Я столкнулся с каким-то интересным поведением, пытаясь сравнить экземпляр System.RuntimeType
с общим типом TOut
:
Type runtimeT = methodInfo.ReturnType; // get RuntimeType using reflection
Type genericT = typeof(TOut);
// This condition fails because runtimeT doesn't
// seem to include an assembly qualified name
if(runtimeT.Equals(genericT)) { ... }
Вот мои доказательства:
Отказ от ответственности: Я точно не знаю, что такое GUID в контексте CLR/type-system, за исключением того, что аббревиатура обозначает глобальный уникальный идентификатор. Возможно, это имя меня вводит в заблуждение.
Предположение: Я предполагаю, что GUID Type
однозначно идентифицирует полностью квалифицированный тип, включая AssemblyQualifiedName
, который отсутствует в factoryInfo.ReturnType
на скриншоте (значение null
.)
Я ошибаюсь в своем предположении?
-
Да. Что действительно представляет GUID GUID и как оно используется?
-
Нет: почему бы
Equals()
не было реализовано путем сравнения GUID?