方法返回类型,如Generic Class Type

时间:2017-07-24 19:13:46

标签: c# generics

是否可能设置方法返回类型,类似于泛型类?

我有通用类:

    class Generic<T>
    {
        public static DataSet test(T input)
        {
         //Some logic...
        }
    }

另一个类,我称之为泛型类。

适用于这个例子:

Generic<int>.test(10);

但是,如果我想调用不同的方法,使用复杂的未知日期类型,我不知道我如何将它们的日期类型设置为Generic Type。

例如

var data = Data.GetData(); // return List<string,int>
var data2 = Data.GetData2() // return Tuple<List<string>, List<int>>

我尝试使用方法GetType,获取返回方法类型,类似这样,但它不起作用。

Generic<data.GetType()>.test(data);

有可能吗,这样吗?

2 个答案:

答案 0 :(得分:2)

不,您无法在没有反射的情况下在运行时指定泛型类型,但可能还有其他方法可以解决您的问题。你可以将泛型约束放在方法而不是类上:

class Generic
{
    public static dynamic Test<T>(T input)
    {
     //Some logic...
    }
}

然后可以从输入类型推断:

Generic.Test(data);

答案 1 :(得分:0)

返回函数的类型在编译时已知。 因此,如果我正确地理解了您的问题,那么您所要求的是不可能的。 TL; DR您无法在运行时设置返回类型。