Я столкнулся с каким-то интересным поведением, пытаясь сравнить экземпляр 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?