.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 条评论
登录 后参与评论

相关文章

来自专栏技术分享

.NET重构—单元测试的代码重构

阅读目录: 1.开篇介绍 2.单元测试、测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的...

1976
来自专栏程序猿

SQL Server基础SQL脚本之内外连接、交叉连接;函数、子查询

代码大概200行左右 本系列,几乎都是代码,记得当时写的时候用的是微软的官方实例数据库AdventureWorks_Data.mdf、AdventureWor...

3154
来自专栏ImportSource

ZGC回收器到底有多变态?

多少年来,JVM中的各种垃圾回收器都在努力追求着两个目标,暂停时间足够短,同时吞吐量也要不错。为了追求二者兼具,各种垃圾回收器可谓绞尽脑汁,但还是无法同时让两个...

2441
来自专栏tkokof 的技术,小趣及杂念

Coroutine,你究竟干了什么?

  使用Unity已经有一段时间了,对于Component、GameObject之类的概念也算是有所了解,而脚本方面从一开始就选定了C#,目前来看还是挺明智的:...

341
来自专栏数据小魔方

ggplot2学习笔记之——ggplot2主题调整系统

ggplot2绘图系统拥有庞大、健全的图形美化系统,这一套图形美化依赖于图例调整系统、标度调整系统、标签调整系统、主题调整系统以及分面系统。 本节仅从主题调整系...

2875
来自专栏FreeBuf

NSA的第七种武器|双脉冲星(DoublePulsar) 后门详细分析

1. 引言 NSA的一系列SMB 漏洞利用的背后,最后都会使用到双脉冲星(DoublePulsar)后门。双脉冲星后门是一个无文件内核级的SMB后门。 2. 双...

2504
来自专栏点滴积累

shapeless官方指南翻译写在前面

目录 前言 Shapeless简介 The Type Astronaut's Guide to Shapeless简介 总结 一、前言        在我的20...

3437
来自专栏互联网杂技

通俗讲解:缓存、缓存算法和缓存框架

1 引言 我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告诉你应该采用什么标准去选择缓...

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

【计算机本科补全计划】王道单科--队列的数组实现

正文之前 我发现哈,王道单科现在对我的作用真的很有限,以前看起来觉得挺难得东西,但是现在看书看多了觉得,也就那样?就以前考研的时候,为了加深理解一定要自己实现一...

3224
来自专栏熊二哥

.NET工作准备--01前言

01应聘须知(已过时) -1.了解软件开发大环境。 -2.准备简历:不宜超过一页,永远准备中文,模板。 -3.渠道:3大网站,中华英才,前程无忧(51job最...

1948

扫码关注云+社区