7

新的 .NET4.5 API 在 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();
}

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

4

1 回答 1

6

混淆是由类==上定义的运算符引起的Type

如果您查看 IL,您会看到调用了运算符而不是ReferenceEquals.

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

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

于 2012-12-30T09:47:38.110 回答