System.Net类型的Type.GetType失败

时间:2012-09-27 14:10:53

标签: .net reflection

我在尝试通过反射实例化WebProxy实例时遇到了这种奇怪的现象:

    Dim proxyType As Type = GetType(System.Net.WebProxy)
    MsgBox(proxyType.FullName)

    Dim reflProxyType As Type = Type.GetType(proxyType.FullName)
    MsgBox(reflProxyType.FullName) ' Here, reflProxyType is null => NullReferenceException

将第一行更改为其他系统命名空间(即System.Text.StringBuilder或System.String)可以正常工作。

    Dim systemType As Type = GetType(System.Text.StringBuilder)
    MsgBox(systemType.FullName)

    Dim reflSystemType As Type = Type.GetType(systemType.FullName)
    MsgBox(reflSystemType.FullName) ' Here, everything works fine

这种行为有什么理由吗?我错过了什么吗? MS是否对System.dll设置了一些限制?

1 个答案:

答案 0 :(得分:2)

答案在Type.GetType (string)的{​​{3}}

  

参数

     

typeName类型:System.String

     

要获取的类型的程序集限定名称。看到   AssemblyQualifiedName。 如果类型在当前正在执行   汇编或在Mscorlib.dll中,提供类型就足够了   名称由其名称空间限定。

MSDN docs类位于 System.dll 中,而不是Mscorlib.dll。因此,您必须:

  1. 提供程序集限定名称,而不仅仅是完全限定名称。 (或)
  2. 使用WebProxy方法。