为什么System.Reflection.IntrospectionExtensions.GetTypeInfo有无法访问的代码?

时间:2012-12-30 09:35:30

标签: c# .net .net-4.5

新的.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();
}

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

1 个答案:

答案 0 :(得分:6)

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

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

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

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