1

リフレクションを介して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にいくつかの制限を設定しましたか?

4

1 に答える 1

2

答えはMSDNドキュメントにありますType.GetType (string)

パラメーター

typeNameタイプ:System.String

取得するタイプのアセンブリ修飾名。AssemblyQualifiedNameを参照してください。タイプが現在実行中のアセンブリまたはMscorlib.dllにある場合は、名前空間で修飾されたタイプ名を指定するだけで十分です。

WebProxyクラスは、Mscorlib.dllではなくSystem.dllにあります。したがって、次のいずれかを行う必要があります。

  1. 完全修飾名だけでなく、アセンブリ修飾名を指定します。(また)
  2. メソッドを使用しAssembly.GetType(string)ます。
于 2012-09-27T14:14:50.143 に答える