net4.5api在introspectionextensions类中具有以下逻辑

public static TypeInfo GetTypeInfo(this Type type)
{
  if (type == (Type) null)
    throw new ArgumentNullException("type");
  IReflectableType reflectableType = (IReflectableType) type;
  if (reflectableType == null)
    return (TypeInfo) null; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< HERE!
  else
    return reflectableType.GetTypeInfo();
}

为什么此方法有无法访问的代码?这是个错误还是故意的?

最佳答案

这种混淆是由==类上定义的Type运算符引起的。
如果您查看il,您将看到调用的是operator,而不是ReferenceEquals

L_0002: call bool System.Type::op_Equality(class System.Type, class System.Type)

所以代码实际上是可以访问的:)

08-04 17:15