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