.Net中stirng转System.Type的一种实现思路

 

今天在上班的过程当中,许长时间未联系的大学小伙伴发来消息,带着一个疑问来找我。spa

 

 

他的需求是type动态添加,这对我来讲固然很easy,用泛型就行了,3d

随后,手起刀落,Demo就写出来,以下:code

写了一个方法,传入T进行了where T:class约束,,如此easy,小伙伴怎么不会呢?然而事情并不是如此简单。blog

原来小伙伴的需求,简单来讲就是把string转成type,这就有点为难了,好像据我所知,好像确实没有直接相似这样Convent.ToType(string typeName)这样的方法。字符串

忽然想到了在作项目的作成中,能够取出全部的程序集并取出每一个程序集下的type,最终实现取出程序中的全部typestring

AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())

那咱们是否是能够给的全部type作一个筛选,实现根据传入的string类型的typeName,取出以改typeName为type的Name的元素?class

代码以下:泛型

  static List<Type> ConventToTypes(string[] typeName)
        {
            var types = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(a => a.GetTypes())
                .Where(u=>typeName.Contains(u.Name))
                .ToList();
            return types;
        }

事实证实是可行的,运行结果以下:List

最终,经过一个筛选的过程,成功实现了“字符串转System.Type”。程序

哈哈,强行在小伙伴面前装了一逼。

 

在公司中午休息,把这个方法整理出来,主要为了分享(在小伙伴面前装逼的快感)个人一种这样解决问题的思路:两种类型没法直接转换时,能够尝试着先把这些类型取出来,而后再作一个条件筛选,若是筛选后找到告终果,那么转换成功,不然,转换失败!

 

若是你们有什么更好的办法,欢迎在下方分享!

相关文章
相关标签/搜索