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

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

他的需求是type动态添加,这对我来说当然很easy,用泛型就好了,

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

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

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

突然想到了在做项目的做成中,可以取出所有的程序集并取出每个程序集下的type,最终实现取出程序中的所有type

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

那我们是不是可以给的所有type做一个筛选,实现根据传入的string类型的typeName,取出以改typeName为type的Name的元素?

代码如下:

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

事实证明是可行的,运行结果如下:

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

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

在公司中午休息,把这个方法整理出来,主要为了分享(在小伙伴面前装逼的快感)我的一种这样解决问题的思路:两种类型无法直接转换时,可以尝试着先把这些类型取出来,然后再做一个条件筛选,如果筛选后找到了结果,那么转换成功,否则,转换失败!

如果大家有什么更好的办法,欢迎在下方分享!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

【Python 第5课】变量

先告诉一直用在线编辑器的同学一个不幸的消息:昨天有同学反馈了之后我才发现,在线编辑器没办法完全模拟控制台下输入输出的操作。所以,你可以通过它来学习和实验,但是想...

2757
来自专栏CRPER折腾记

一篇不大靠谱的常用正则表达式汇总(前端)

我没有那么多奇奇怪怪的正则,这些都是工作中很常见的, 所有正则都是经过真实环境下的考验,不是假想推断的正则....

853
来自专栏Java帮帮-微信公众号-技术文章全总结

02.工厂模式/抽象工厂模式

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在...

2993
来自专栏Java爬坑系列

【Java入门提高篇】Day2 接口

  上一篇讲完了抽象类,这一篇主要讲解比抽象类更加抽象的内容——接口。   什么是接口呢?先来看一个现实中的栗子,我们常用的插座,一般分为两孔和三孔,所以基本上...

1868
来自专栏灯塔大数据

技术 | Python从零开始系列连载(五)

导读 为了解答大家初学Python时遇到各种常见问题,小灯塔特地整理了一系列从零开始的入门到熟练的系列连载 上一期学习了Python的基本运算和表达式,相信大家...

34211
来自专栏工科狗和生物喵

【计算机本科补全计划】指令:计算机的语言(MIPS) --计算机组成原理

正文之前 今天的主题就是,重新学一次汇编语言,不过总感觉跟单片机的汇编语言没啥差别,不过就是地址变宽,然后一些限制多了不少,因为计算机要进行大量的运算,所以更加...

7337
来自专栏GopherCoder

由 Python 到 Shell

1943
来自专栏数据科学与人工智能

【Python环境】如何使用正确的姿势进行高效Python函数式编程?

关于函数式编程 有哪些函数式语言? 其实函数是语言很早就出现了,上世纪30年代出现的Lambda和50年代的LISP,比面向过程和对象的语言出现的更早,现代的C...

21810
来自专栏北京马哥教育

两句话轻松掌握 python 最难知识点——元类

千万不要被所谓“元类是99%的python程序员不会用到的特性”这类的说辞吓住。因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,...

4059
来自专栏PPV课数据科学社区

【完整案例21张PPT】大数据监测P2P跑了风险 附PDF下载

★每日一题(答案次日公布) 昨日Q12答案:B Q12: 假设12个销售价格记录组已经排序如下:5, 10, 11, 13, 15,35, 50, 55,...

2725

扫码关注云+社区