.Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解
前言
今天在上班的過(guò)程中,許長(zhǎng)時(shí)間未聯(lián)系的大學(xué)小伙伴發(fā)來(lái)消息,帶著一個(gè)疑問(wèn)來(lái)找我。
他的需求是type動(dòng)態(tài)添加,這對(duì)我來(lái)說(shuō)當(dāng)然很easy,用泛型就好了,
隨后,手起刀落,Demo就寫(xiě)出來(lái),如下:
寫(xiě)了一個(gè)方法,傳入T進(jìn)行了where T:class約束,,如此easy,小伙伴怎么不會(huì)呢?然而事情并非如此簡(jiǎn)單。
原來(lái)小伙伴的需求,簡(jiǎn)單來(lái)說(shuō)就是把string轉(zhuǎn)成type,這就有點(diǎn)為難了,好像據(jù)我所知,好像確實(shí)沒(méi)有直接類(lèi)似這樣Convent.ToType(string typeName)
這樣的方法。
突然想到了在做項(xiàng)目的做成中,可以取出所有的程序集并取出每個(gè)程序集下的type,最終實(shí)現(xiàn)取出程序中的所有type
AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())
那我們是不是可以給的所有type做一個(gè)篩選,實(shí)現(xiàn)根據(jù)傳入的string類(lèi)型的typeName,取出以改typeName為type的Name的元素?
實(shí)現(xiàn)方法
代碼如下:
static List<Type> ConventToTypes(string[] typeName) { var types = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes()) .Where(u=>typeName.Contains(u.Name)) .ToList(); return types; }
事實(shí)證明是可行的,運(yùn)行結(jié)果如下:
最終,通過(guò)一個(gè)篩選的過(guò)程,成功實(shí)現(xiàn)了“字符串轉(zhuǎn)System.Type”。
哈哈,強(qiáng)行在小伙伴面前裝了一逼。
在公司中午休息,把這個(gè)方法整理出來(lái),主要為了分享(在小伙伴面前裝逼的快感)我的一種這樣解決問(wèn)題的思路:兩種類(lèi)型無(wú)法直接轉(zhuǎn)換時(shí),可以嘗試著先把這些類(lèi)型取出來(lái),然后再做一個(gè)條件篩選,如果篩選后找到了結(jié)果,那么轉(zhuǎn)換成功,否則,轉(zhuǎn)換失敗!
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Visual Studio卸載不完全問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了Visual Studio卸載不完全問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04asp.net中將js的返回值賦給asp.net控件的小例子
要做一個(gè)顯示用戶(hù)在線停留時(shí)間的功能,拖了一個(gè)label控件用于顯示時(shí)間,而時(shí)間是通過(guò)js來(lái)實(shí)現(xiàn)的,現(xiàn)在要把js的返回值賦給label,方法如下:2013-03-03ASP.NET項(xiàng)目開(kāi)發(fā)中日期控件DatePicker如何使用
這篇文章主要為大家詳細(xì)介紹了ASP.NET項(xiàng)目開(kāi)發(fā)中日期控件DatePicker的使用方法,感興趣的小伙伴們可以參考一下2016-04-04asp.net使用DataTable構(gòu)造Json字符串的方法
這篇文章主要介紹了asp.net使用DataTable構(gòu)造Json字符串的方法,涉及asp.net字符串序列化、遍歷及構(gòu)造等操作技巧,需要的朋友可以參考下2015-12-12ASP.NET Core MVC通過(guò)IViewLocationExpander擴(kuò)展視圖搜索路徑的實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core MVC通過(guò)IViewLocationExpander擴(kuò)展視圖搜索路徑的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04ASP.NET Core中的對(duì)象池化技術(shù)詳解
這篇文章主要為大家詳細(xì)介紹了ASP.NET Core中的對(duì)象池化技術(shù)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01asp.net 合并GridView中某列相同信息的行(單元格)
合并GridView中某列相同信息的行(單元格)2009-11-11防止在服務(wù)器處理完成之前用戶(hù)多次點(diǎn)擊提交按鈕處理代碼
在提交表單時(shí),如果網(wǎng)頁(yè)速度過(guò)慢或者其他原因,用戶(hù)多次提交能導(dǎo)致數(shù)據(jù)的修改,怎么解決這個(gè)問(wèn)題呢,接下來(lái)將為您解決這個(gè)問(wèn)題,需要的朋友可以了解下2012-12-12