c# 封装dbhelper中的存储过程执行,如何比较好的返回结果和out参数的值

我现在想到的是建3个类

//返回cmd.ExecuteNonQuery();的存储过程执行结果
class1{
    int returnnum;
    dic outputdic;
}

//返回cmd.ExecuteScalar();的存储过程执行结果
class2{
    object returnobject;
    dic outputdic;
}

//返回cmd.ExecuteQuery();的存储过程执行结果
class2{
    datatable returndatatable;
    dic outputdic;
}

有没有什么好的方法优雅的解决这个问题

用泛型

class MyResult<T>
{
public T ReturnVal;
public dic outputdic;
}
第一个返回
MyResult<int>
第二个
MyResult<object>
第三个
MyResult<DataTable>