簡體   English   中英

泛型類的通用集合?

[英]Generic collection of generic classes?

我有一個從數據庫中填寫的類:

public class Option<T>
{
  public T Value { get; set; }
  public T DefaultValue { get; set; }
  public List<T> AvailableValues { get; set; }
}

我想要一個他們的集合:

List<Option<T>> list = new List<Option<T>>();
Option<bool> TestBool = new Option<bool>();
TestBool.Value = true;
TestBool.DefaultValue = false;
list.Add(TestBool);
Option<int> TestInt = new Option<int>();
TestInt.Value = 1;
TestInt.DefaultValue = 0;
list.Add(TestInt);

它似乎不起作用。 想法?

我懷疑你真的想要一個非泛型基類 - 否則在不同的Option<T>閉合類型之間沒有任何共同點。

我理解你要做的是什么,但.NET泛型不允許你表達這種關系。 這就像試圖從Type到該Type的實例做一個地圖......它只是不會飛:(

您必須提供類型而不是模板參數:

List<Option<T>> list = new List<Option<T>>();

List<Option<bool>> list = new List<Option<bool>>();

Option<int>類型的項添加到同一個列表將不起作用,但這是一個與我上面提到的問題不同的問題。

第一行你必須說T型是什么。

List<Option<bool>> list = new List<Option<bool>>();

而且你也不能把TestInt放在這個列表中......

你正在做的只適用於異構列表。

List<T>是類型T的同類列表,意味着所有元素必須是T類型。 因為Option<bool>Option<int>沒有除了object之外的共同祖先,所以除非使用List<object>或舊的ArrayList ,否則它們都不能這樣做,兩者都充當異構列表。

考慮從該列表中檢索對象:

list.Add(TestBool);
list.Add(TestInt);

for(int i = 0; i < list.Count; i++)
{
   list[i].Value // <- what's the type of this?
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM