.Net中stirng轉System.Type的一種實現思路


 

今天在上班的過程中,許長時間未聯系的大學小伙伴發來消息,帶着一個疑問來找我。

 

 

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

哈哈,強行在小伙伴面前裝了一逼。

 

在公司中午休息,把這個方法整理出來,主要為了分享(在小伙伴面前裝逼的快感)我的一種這樣解決問題的思路:兩種類型無法直接轉換時,可以嘗試着先把這些類型取出來,然后再做一個條件篩選,如果篩選后找到了結果,那么轉換成功,否則,轉換失敗!

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM