2017-07-24 103 views
0

是可能的设置方法返回类型,类型为泛型类?方法返回类型像泛型类型

我有泛型类:

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

另一个类,在这里我打电话给我的泛型类。

它适用于这样的例子:

Generic<int>.test(10); 

但是,如果我想调用不同的方法,复杂的未知日期类型,我不知道我是怎样把自己的最新型像泛型类型。

对于实例

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

我尝试使用方法GetType,为得到回报的方法类型,这样的事情,但它不工作。

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

是否有可能,像这样?

+0

会有什么'test'用'T'你做对它没有任何限制,你不用它作为返回类型。为什么不让类不是通用的,而只是做'动态测试(对象输入)'? –

+0

'测试(T输入)' – Will

+0

在最后我想转换这个结果列表,元组到我的数据集,我把它放在这里动态只属于,但我想返回DataSet。 – tomas

回答

2

不,您不能在没有反射的运行时指定泛型类型,但可能有其他方法可以解决您的问题。您可以通用约束的方法,而不是类:

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

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

Generic.Test(data); 
+0

哦,就是这样。我是新的泛型类型,我想,我必须有一个泛型类,当我想使用泛型方法。谢谢。 – tomas

+0

@tomas Nope - 仅当您希望泛型类型应用于整个类时。 –

0

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