当前位置: 移动技术网 > IT编程>开发语言>.net > .Net中关于stirng转System.Type的一种实现思路详解

.Net中关于stirng转System.Type的一种实现思路详解

2019年05月28日  | 移动技术网IT编程  | 我要评论

易比网,天天向上20130208,山西财经大学是几本

前言

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

他的需求是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”。

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

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网