如何使用相同的通用数组参数和相同的通用数组返回类型制作异步静态方法

时间:2019-06-11 17:58:41

标签: c# linq generics

我想对所有相同的代码执行两次,但是只针对两个不同的对象。我从SOAP API中获得了这些对象(而不是过时的)。 我想避免重复编写重复的代码。我将使用原始对象并进行很多操作(以相同的方式),唯一的区别是对象类型是不同的,所以这就是为什么我需要制作通用对象的原因。我希望它返回与参数相同的类型。我遇到一个问题,如果我执行这样的代码

public static class ParamsHelper<T>
{
    public static async Task<T[]> Whatever(T[] rptParams)
    {
        //do some stuff to rptparams
        return rptParams;
    }
}

//  then I call it like this below:
var params = await  ParamsHelper.Whatever<ItemP[]>(new ItemP[]{});

//  it says can't convert type ItemP[] to type ItemP[][].

此外,我正在使用LINQ进行所有操作。我很乐意提供有关如何访问对象字段的建议(也许是反射?)

1 个答案:

答案 0 :(得分:1)

您必须在方法上声明泛型。

public static async Task<T[]> Whatever<T>(T[] rptParams)

用法通常暗含在用法中,因此您不必通过它。

如果必须通过它,则不要将其设置为数组。

ParamsHelper.Whatever<ItemP>(new ItemP[] { });