gpt4 book ai didi

.net - 当给定部分限定类型名称时,Type.GetType 如何工作?

转载 作者:行者123 更新时间:2023-12-02 11:23:04 25 4
gpt4 key购买 nike

在很多地方,我都会遇到 FullTypeName, AssemblyName 形式的部分限定类型名称,例如 Type.AssemblyQualifiedName,仅不含版本、区域性和 publicKeyToken 限定符。

我的问题是如何以最少的努力将其转换为相应的类型?我认为 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");

非常感谢。

最佳答案

如果程序集已加载到当前域中,则以下代码通常有效:

public static Type GetTypeEx(string fullTypeName)
{
return Type.GetType(fullTypeName) ??
AppDomain.CurrentDomain.GetAssemblies()
.Select(a => a.GetType(fullTypeName))
.FirstOrDefault(t => t != null);
}

你可以像这样使用它:

Type t = GetTypeEx("System.Net.Sockets.SocketException");

关于.net - 当给定部分限定类型名称时,Type.GetType 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2367652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com