将类型(int,string,…)转换为 T 类型

方法定义:

private static T GetValueByKey<T>(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;

}

 

public static TConvertType DoConvert<TConvertType>(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;
}

写法二:


public static TConvertType DoConvert<TConvertType>(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<string>("aaa"); 

GetValueByKey<int>("bbb"); 

 

参考:http://stackoverflow.com/questions/8171412/cannot-implicitly-convert-type-int-to-t

 

posted @ 2015-11-12 09:47  小站记忆  阅读(2228)  评论(0编辑  收藏  举报