gpt4 book ai didi

.net - 如何从类型的程序集限定名中提取程序集全名?

转载 作者:行者123 更新时间:2023-12-01 23:04:56 26 4
gpt4 key购买 nike

我有一个类型的程序集限定名称,例如

MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

我想提取程序集全名,即

MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

显然我可以通过简单的字符串解析来做到这一点,但是有一个框架方法可以做到这一点吗?

注意:我没有类型或程序集,只有字符串,这是问题的重要组成部分,因此 myType.AssemblyQualifiedName、myType.Assembly.FullName 等不会有帮助

最佳答案

overloadType.GetType接受可用于解析 AssemblyName 的函数到大会。返回 null 通常会引发异常,因为无法解析类型,但可以通过将 false 传递给 throwOnError 参数来抑制这种情况。

用于解析的函数还可以在原始代码将返回的外部范围中设置字符串变量。

using System;
using System.Diagnostics;
using System.Reflection;

namespace ConsoleApp {
public static class Program {
public static void Main() {
var assemblyName = GetAssemblyName("MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
Debug.Assert(assemblyName == "MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
}

public static String GetAssemblyName(String typeName) {
String assemblyName = null;
Func<AssemblyName, Assembly> assemblyResolver = name => {
assemblyName = name.FullName;
return null;
};

var type = Type.GetType(typeName, assemblyResolver, null, false);
if (type != null)
return type.AssemblyQualifiedName;

return assemblyName;
}
}
}

关于.net - 如何从类型的程序集限定名中提取程序集全名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830765/

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