我开发了这种基本方法,我希望能够修剪并返回任何类型:
public static object TrimValue<T>(T arg, int MaxLength)
{
var val = arg.ToString();
var trimVal = val.Substring(0, MaxLength);
return Convert.ChangeType(trimVal, arg.GetType());
}
使用:
double aDouble = 1000;
double cDouble = TrimValue(aDouble, 2);
不幸的是我得到错误:
无法将类型'object'隐式转换为'double'
一个演员会工作,但我可能会修剪Double,String或Int,所以不会工作。有没有人知道如何修剪一般值?
由于
答案 0 :(得分:1)
您的返回类型不正确,而不是返回object
更改它以返回调用者使用T
传递的特定泛型类型:
public static T TrimValue<T>(T arg, int MaxLength)
{
var val = arg.ToString();
var trimVal = val.Substring(0, MaxLength);
return (T)Convert.ChangeType(trimVal, arg.GetType());
}