我如何可以定義一個類型列表,這樣我可以用它作爲:與類型的動態計數泛型類型參數
var l1 = new List<int>();
var l2 = new List<int, long>();
var l3 = new List<int, long, byte>();
?
我如何可以定義一個類型列表,這樣我可以用它作爲:與類型的動態計數泛型類型參數
var l1 = new List<int>();
var l2 = new List<int, long>();
var l3 = new List<int, long, byte>();
?
您可以使用元組的列表:
var l1 = new List<int>();
var l2 = new List<Tuple<int, long>>();
var l3 = new List<Tuple<int, long, byte>>();
所以,我找到了解決辦法。它需要定義基本類型名單:它
class List { }
,並繼承了一些孩子的的:
class List<T> { }
class List<T, T1> : List<T> { }
class List<T, T1, T2> : List<T> { }
(繼承不一定,但它需要如果清單中已澆注到列表)
基本列表構造可以得到所有應用的通用參數:
class List
{
Type[] _types;
public List()
{
_types = GetType().GetGenericArguments();
}
}
「繼承」繼承列表
但是,這仍然只是一個'List
我嘗試歸檔的一件事是列表類型,可以用不同類型的參數計數創建。在我的認識中,它需要將一些類型映射到List(而不是將它們傳遞給任何方法)。基礎構造函數獲取泛型參數並將它們保存到Type []數組中 – devi 2012-02-23 10:19:04
說你想GE t從您的l3
列表中選擇第3個項目 - 您會做什麼?
如果你的回答是「我想將它轉換爲long
,因爲int
和byte
都澆注到long
反正」,你應該首先使用List<long>
。
如果你要使用的檢索類型l3[3].GetType()
和if else
,你應該考慮使用List<object>
,爲你治療項目爲「未知類型」。
你正在嘗試實現目前還不清楚。在.NET中沒有List的原因是它沒用。你可以創建一個包裝int long和byte的類型,並且創建一個這種類型的列表。 –
2012-02-23 09:58:39
你的用例是什麼?你應該向我們解釋你想做什麼。 – ken2k 2012-02-23 10:22:38
我嘗試歸檔的一件事是列表類型,可以使用不同的類型參數計數創建。在我的認識中,它需要將一些類型映射到List(而不是將它們傳遞給任何方法)。 – devi 2012-02-23 10:23:33