【发布时间】:2011-01-22 23:37:13
【问题描述】:
我在很多地方都遇到过 FullTypeName, AssemblyName 形式的部分限定类型名称,即像 Type.AssemblyQualifiedName 只是没有版本、文化和 publicKeyToken 限定符。
我的问题是如何以最少的努力将其转换为相应的Type?我认为Type.GetType 可以完成这项工作,但可惜它没有。例如,以下代码返回null:
Type.GetType("System.Net.Sockets.SocketException, System");
当然,如果我指定完全限定名称,它确实有效:
Type.GetType("System.Net.Sockets.SocketException, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
非常感谢。
【问题讨论】:
-
你有编译时的类型吗?如果是这样,为什么不使用 typeof(
).FullName 等。阿尔?如果您在运行时拥有该类型,则可以使用 -
我非常清楚 typeof() 或 Type.FullName。对象的类型是从配置文件中读取的,这就是我使用 Type.GetType 的原因。这就是为什么我对了解部分限定类型名称的工作方式如此感兴趣的原因。