修剪并返回任何类型

时间:2016-12-01 15:04:59

标签: c# generics type-conversion

我开发了这种基本方法,我希望能够修剪并返回任何类型:

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,所以不会工作。有没有人知道如何修剪一般值?

由于

1 个答案:

答案 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());
}