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

前端之家收集整理的这篇文章主要介绍了c# – 为什么System.Reflection.IntrospectionExtensions.GetTypeInfo有无法访问的代码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
新的.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();
}

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

解决方法

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

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

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

所以代码实际上是可以达到的:)

猜你在找的C#相关文章