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)

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

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString(&quot;x2&quot;));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable&lt;Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include &quot;WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...