我目前有一个通用方法,根据键从数据库中读取值并返回该值的特定类型。
public T Get<T>(string key, T defaultValue)
{
var myparms = new List<SqlParameter>
{
new SqlParameter("@KEY", key),
};
const string getPropertyQuery = "SELECT SPARM_VALUE FROM SYSPARAMS WHERE SPARM_KEY = @KEY;";
var returnedValue = //Get value from Database
if (returnedValue == null)
{
return defaultValue; //Value does not exists so return default.
}
return (T)Convert.ChangeType(returnedValue, typeof(T));
}
但是当我尝试返回TimeSpan类型时,会出现以下异常:
从'System.String'到'System.TimeSpan'的转换无效。
经过一番搜索,我发现最常见的解决方法是使用TimeSpan.Parse
或TimeSpan.TryParse
方法。我还找到了TimeSpan结构。
我的问题是为什么TimeSpan不能做到这一点。这是因为它没有
IConvertible
接口吗?对此有任何想法将不胜感激。
IConvertable
。 - leppie