遇到的問題是這樣,系統中有一個字符類型的字段來存儲一些通用的系統配置,雖然存儲的形式是字符串,可是實際在系統中的使用類型則多是string, bool, int, decimal.spa
這個時候就想寫一個通用的方法來獲取各類不一樣類型的返回值,固然這個時候想到的就是使用泛型。那麼這個方法的定義大概就是這樣:code
T GetValue<T>(string key)
這個方法涉及到一個字符串類型轉換成泛型的問題。blog
public T GetSingleConfigValue<T>(eConfigKeyName key, T defaultValue) { var config = GetConfig(key) return (T)config; }
直接使用上面的方式,就會出現以下的編譯錯誤。ci
查了查資料,正確的方法是使用Convert.ChangeType方法:字符串
(T) Convert.ChangeType(result, typeof (T));