有時候我們在編寫程序的時候會突然使用一些比較少見的用法,比如今天在編寫程序過程中,遇到這樣一個問題。這個問題我以前沒有遇到過,剛開始不知道怎麼處理比較好。在搜尋的過程中發現其實.net類庫已經提供了現成的處理方法。因此在此記錄一下,僅供以後學習參考,也希望能夠有同樣需要的朋友一個參照。下面來看看這個問題吧!
問題描述:有一個泛型方法如public List<T> getList<T>(),它返回的是一個List集合,List集合中元素的類型由調用泛型方法時指定。在getList方法具體實現中,可能需要將某種類型的數據轉換成T類型,然後添加到List集合中。
舉例說明:調用方法getList<int>(),數據本身是string類型,這樣則需要將string類型數據類型轉換成int類型,才能添加到List<int>集合中。
解決方法:
我們在命名空間System下,找到了Convert類下有一個ChangeType方法,它有三種重載方式,如下圖所示:
關於這個方法的詳細介紹請參照MSDN:http://technet.microsoft.com/zh-cn/library/system.convert.changetype(en-us).aspx
有了這個方法,我們來看一下如何解決這個問題了。
可以將上述過程提取成公有方法,看看下面代碼。
01
public
static
T FromType<T,TK>(TK text)
02
{
03
try
04
{
05
return
(T) Convert.ChangeType(text,
typeof
(T), CultureInfo.InvariantCulture);
06
}
07
catch
08
{
09
return
default
(T);
10
}
11
}