的overload到Type.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;
}
}
}
不幸的是我的应用程序将无法获得实际的类型对我来说,那时的我,不得不进行解析... –
@保罗ķ调用的GetType:是的,如果你没有装配那么你需要解析字符串。由于CLR无法找到该类型的元数据以进行反射,因此反射等无法帮助您。我尽量避免质疑动机,但在这里解析有什么问题? – jason
@Jason,thx为您的输入...解析没有问题,如果这是我不得不诉诸于,但FQN可以涉及(MSDN“指定完全限定的类型名称”),我只是一个公开暴露的框架解决方案可能存在,因为它必须在内部解析这些东西...... –