时间:2021-05-28
前言
今天在上班的过程中,许长时间未联系的大学小伙伴发来消息,带着一个疑问来找我。
他的需求是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”。
哈哈,强行在小伙伴面前装了一逼。
在公司中午休息,把这个方法整理出来,主要为了分享(在小伙伴面前装逼的快感)我的一种这样解决问题的思路:两种类型无法直接转换时,可以尝试着先把这些类型取出来,然后再做一个条件筛选,如果筛选后找到了结果,那么转换成功,否则,转换失败!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
获取方法的相关信息的两种形式反射是一种允许用户获得类信息的C#功能,Type对象映射它代表的底层对象;在.Net中,一旦获得了Type对象,就可以使用GetMe
关于详解Android应用中DialogFragment的基本用法,大家可以参考下。1、概述DialogFragment在android3.0时被引入。是一种特
1.第一种方式采用System.Net.Dns的GetHostAddress的方式,具体请看代码://////网络不通畅可以获取///不过能获取到具体的IP//
C#中Array和ArrayList详解及区别一、Array的用法type[]typename=newtype[size];或者type[]typename=n
Android顶部(toolbar)搜索框实现的实例详解本文介绍两种SearchView的使用情况,一种是输入框和搜索结果不在一个activity中,另一种是在