首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Type.GetType("System.Net.WebException")返回null

Type.GetType("System.Net.WebException")返回null
EN

Stack Overflow用户
提问于 2019-11-23 08:57:23
回答 2查看 642关注 0票数 2

通过执行以下操作,我试图从System.Net.WebException的名称中获得对它的类型引用:

代码语言:javascript
复制
var t = Type.GetType("System.Net.WebException");

tnull,我不明白为什么。我的项目是一个针对.NET 4.6.1的类库。我引用的是System,也尝试过引用System.NetSystem.Web,没有任何运气。

以下内容编译并返回正确的类型:

代码语言:javascript
复制
var t = typeof(System.Net.WebException);

但我需要string版本才能在这里工作。我也试过这个:

代码语言:javascript
复制
var t = Type.GetType("System.Net.WebException, System");

还返回null

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-23 09:09:19

根据文档 of Type.GetType,只有在类型在mscorlib.dll中时,才能传递名称空间限定类型名称,否则必须使用程序集限定名。WebException不在mscorlib.dll中,所以您至少需要:

代码语言:javascript
复制
Type.GetType("System.Net.WebException, System, Version=4.0.0.0")

通过检查typeof(WebException).AssemblyQualifiedName,您可以看到以下内容:

代码语言:javascript
复制
System.Net.WebException, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
票数 2
EN

Stack Overflow用户

发布于 2019-11-23 09:09:21

你应该用这个:

代码语言:javascript
复制
var t = Type.GetType("System.Net.WebException" + ", System");

你试过以下几种方法:

代码语言:javascript
复制
 var t = Type.GetType("System.Net.WebException", true);

您可能会收到以下错误消息:

未处理的异常。System.TypeLoadException:无法从程序集'ConsoleApp1,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null‘加载'System.Net.WebException’类型。在System.RuntimeTypeHandle.GetTypeByName(字符串名,布尔.

我们传递的第二个参数true表示,如果找不到该类型,我们希望这个方法调用抛出一个错误。因此,通过传递它,您将注意到Type.GetType需要完全限定的名称。更正式地说,这里

代码语言:javascript
复制
public static Type GetType (string typeName);

参数

代码语言:javascript
复制
typeName String

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59006035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档