我需要从它的全名创建一个类型Ex:“System.String”或“Tuple’2 [string,Mytype]”.
字符串中没有关于程序集的信息.
这是代码的样子.
字符串中没有关于程序集的信息.
这是代码的样子.
private static Type LoadType(string typeName) { // try loading the type Type type = Type.GetType(typeName,false); if (type != null) return type; // if the loading was not successfull iterate all the referenced assemblies and try to load the type. Assembly asm = Assembly.GetEntryAssembly(); AssemblyName[] referencedAssemblies = asm.GetReferencedAssemblies(); foreach (AssemblyName referencedAssemblyName in referencedAssemblies) { type = referencedAssembly.GetType(typeName,false); if (type != null) return type; } throw new TypeLoadException(string.Format("Could not load the Type '{0}'",typeName)); }
当类型不是通用的时,此方法有效.但是对于泛型类型,遍历程序集总是失败,因为没有程序集包含构建类型所需的所有定义.
有没有办法在调用GetTypes时为类型解析提供多个程序集?
解决方法
你将不得不以我认为的艰难方式去做.幸运的是,这并不难.很简单:
>将类型名称解析为类型定义和泛型类型参数.>获取泛型类型定义对象>获取每个泛型类型参数的类型对象>使用类型定义对象上的MakeGenericType方法,从泛型类型定义和泛型类型参数构造泛型类型.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。