方法定义:
private static T GetValueByKey(string key) where T : IConvertible
{
T localVal=default(T);
string strType = typeof(T).Name;
string valuesData = ConfigurationManager.AppSettings[key].ToString();
localVal = (T)Convert.ChangeType(valuesData, typeof(T));
return localVal;
}
publicstaticTConvertTypeDoConvert(objectconvertValue,outbool hasConverted){hasConverted =false;varconverted =default(TConvertType);try{converted =(TConvertType)Convert.ChangeType(convertValue,typeof(TConvertType));hasConverted =true;}catch(InvalidCastException){}catch(ArgumentNullException){}catch(FormatException){}catch(OverflowException){}returnconverted;}
写法二:
public static TConvertType DoConvert(object convertValue, out bool hasConverted)
{
hasConverted = false;
var converted = default(TConvertType);
try
{
converted = (TConvertType)
Convert.ChangeType(convertValue, typeof(TConvertType));
hasConverted = true;
}
catch (InvalidCastException)
{
}
catch (ArgumentNullException)
{
}
catch (FormatException)
{
}
catch (OverflowException)
{
}
return converted;
}
调用:
GetValueByKey("aaa");
GetValueByKey("bbb");
参考:http://stackoverflow.com/questions/8171412/cannot-implicitly-convert-type-int-to-t
原文:http://www.cnblogs.com/shouwu/p/4958008.html