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

简介: 今天在上班的过程中,许长时间未联系的大学小伙伴发来消息,带着一个疑问来找我。     他的需求是type动态添加,这对我来说当然很easy,用泛型就好了, 随后,手起刀落,Demo就写出来,如下: 写了一个方法,传入T进行了where T:class约束,,如此easy,小伙伴怎么不会呢?然而事情并非如此简单。

 

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

 

 

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

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

 

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

 

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

 

相关文章
|
存储 C# 开发者
【.Net实用方法总结】 整理并总结System.IO中BinaryReader类及其方法介绍
本文主要介绍System.IO命名空间的BinaryReader类,介绍其常用的方法和示例说明。
【.Net实用方法总结】 整理并总结System.IO中BinaryReader类及其方法介绍
|
安全 C# 开发者
【.Net实用方法总结】 整理并总结System.IO中Directory类及其方法介绍
本文主要介绍System.IO命名空间的Directory类,介绍其常用的方法和示例说明。
【.Net实用方法总结】 整理并总结System.IO中Directory类及其方法介绍
|
安全 C# 开发者
【.Net实用方法总结】 整理并总结System.IO中File类及其方法介绍
本文主要介绍System.IO命名空间的File 类,介绍其常用的方法和示例说明。
【.Net实用方法总结】 整理并总结System.IO中File类及其方法介绍
|
存储 网络协议 程序员
【.Net实用方法总结】 整理并总结System.IO中Stream类及其方法介绍
本文主要介绍System.IO命名空间的Stream类,介绍其常用的方法和示例说明。
|
存储 缓存 C#
【.Net实用方法总结】 整理并总结System.IO中BinaryWriter类及其方法介绍
本文主要介绍System.IO命名空间的BinaryWriter类,介绍其常用的方法和示例说明。
|
缓存 移动开发 C#
【.Net实用方法总结】 整理并总结System.IO中TextWriter类及其方法介绍
本文主要介绍System.IO命名空间的TextWriter类,介绍其常用的方法和示例说明。
|
C# 开发者 索引
【.Net实用方法总结】 整理并总结System.IO中TextReader类及其方法介绍
本文主要介绍System.IO命名空间的TextReader类,介绍其常用的方法和示例说明。
|
C# 开发者 索引
【.Net实用方法总结】 整理并总结System.IO中StringReader类及其方法介绍
本文主要介绍System.IO命名空间的StringReader类,介绍其常用的方法和示例说明。
一起谈.NET技术,System.DateTime 详解(续)
  在《System.DateTime 详解》一文中,我们从跨时区的角度剖析了我们熟悉的System.DateTime类型。如果你还是采用传统的ADO.NET编程方式,并使用DataSet作为数据实体,可能你会熟悉System.Data.DataSetDateTime这么一个类型。
1045 0
一起谈.NET技术,System.DateTime详解
  最近一直在负责公司内部框架的升级工作,今天对一个小问题进行了重新思考——时间的处理。具体来说,是如何有效地进行时间的处理以提供对跨时区的支持。对于一个分布式的应用来说,倘若客户端和服务端部署与不同的地区,在对时间进行处理的时候,就需要考虑时区的问题。
808 0