博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net中stirng转System.Type的一种实现思路
阅读量:6955 次
发布时间:2019-06-27

本文共 954 字,大约阅读时间需要 3 分钟。

 

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

 

 

他的需求是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
ConventToTypes(string[] typeName) { var types = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes()) .Where(u=>typeName.Contains(u.Name)) .ToList(); return types; }

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

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

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

 

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

 

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

 

转载地址:http://xctil.baihongyu.com/

你可能感兴趣的文章
Hive子查询(翻译自Hive wiki)
查看>>
webService调用模式比较
查看>>
放之四海皆适用的设计原则(二)
查看>>
SQL中N $ # @的作用
查看>>
慎用ViewController的跳转 (转)
查看>>
[Winodows Phone 7控件详解]Silverlight toolkit for Windows Phone 7.1控件-4
查看>>
在Linux-2.6.31上使用ubifs
查看>>
NYOJ 106(背包)
查看>>
制作自定义背景Button按钮、自定义形状Button的全攻略
查看>>
win7开启特定端口
查看>>
从客户端检测到有潜在危险的Request.Form值,validaterequest="false"不能解决.
查看>>
TCP,IP,HTTP,SOCKET区别和联系socket与http的区别
查看>>
SVN使用教程之-分支/标记 合并 subeclipse (转)
查看>>
【计导作业】文件——过滤注释
查看>>
(转)Java并发编程:并发容器之ConcurrentHashMap
查看>>
java常用英语单词
查看>>
SQLSERVER系统视图,系统表,sys.sql_modules视图
查看>>
DEDECMS之十 修改织梦链和文章的默认来源及作者
查看>>
【转载】C#数据导出到Excel文件
查看>>
转:数字签名是什么?(阮一峰)
查看>>