2017-07-24 126 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您無法在運行時設置返回類型。