public class Calculate
{
    public static T Add<T>(T a, T b) where T : struct
    {
        return (T)((object)(Convert.ToDouble(a) + Convert.ToDouble(b)));
    }
}
run Calculate.Add(10, 20) will get error,why?
public class Calculate
{
    public static T Add<T>(T a, T b) where T : struct
    {
        return (T)((object)(Convert.ToDouble(a) + Convert.ToDouble(b)));
    }
}
run Calculate.Add(10, 20) will get error,why?
Use this.
 return (T)Convert.ChangeType(Convert.ToDouble(a) + Convert.ToDouble(b), typeof(T));
It will convert your result to type "T".