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)
所以代码实际上是可以访问的:)