Joa*_*rel 28 .net reflection parsing assemblies
我想解析.NET 3.5中的程序集限定名称.特别是,组件本身不可用,它只是名称.我可以想到很多方法可以手动完成,但我想我可能会遗漏一些在系统库中执行此操作的功能.有什么建议吗?
小智 18
该的AssemblyName类可以解析组件名称为你,只把这个字符串传给它的构造英寸 如果你有一个程序集限定类型名称,我认为你必须首先删除字符串的类型部分(即一切直到第一个逗号).
小智 5
从.Net 4开始,你有一个新的Type.GetType覆盖:
public static Type GetType(
string typeName,
Func<AssemblyName, Assembly> assemblyResolver,
Func<Assembly, string, bool, Type> typeResolver,
bool throwOnError,
bool ignoreCase
)
Run Code Online (Sandbox Code Playgroud)
请参阅http://msdn.microsoft.com/en-us/library/ee332784%28v=vs.100%29.aspx
您需要做的是在上述文档的示例中:
Type t2 = Type.GetType(test,
(aName) => aName.Name == "MyAssembly" ?
Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") :
Assembly.Load(aName),
(assem, name, ignore) => assem == null ?
Type.GetType(name, false, ignore) :
assem.GetType(name, false, ignore), true
);
Run Code Online (Sandbox Code Playgroud)
您可以用更复杂的函数替换上面的lambdas.