簡體   English   中英

泛型類繼承自Dictionary with Collection

[英]Generic class inherit from Dictionary with Collection

我有這個帶有集合定義的自定義詞典:

class CollectionDictionary<K, C, V> : Dictionary<K, C> where C : ICollection<V>, new()

並像這樣使用它(例如):

CollectionDictionary<Guid, HashSet<int>, int> sample;

但對我來說,這個double int似乎很尷尬,是否有可能繞過它而只寫:

CollectionDictionary<Guid, HashSet<int>> sample;

這樣編譯器知道V只能是int嗎?

編輯:

我需要類來抽象此方法

public void Add(K key, V value)
{
    if (!this.ContainsKey(key))
    {
        base.Add(key, new C());
    }
    this[key].Add(value);
}

你可以這樣做

class CollectionDictionary<K, C> : Dictionary<K, ICollection<C>>

它消除了使ICollection具有空構造函數的約束。

為了能夠創建新的集合,您可以要求一個這樣做的代表。 但是對於您而言,我認為您的原始解決方案將產生更少的樣板代碼。

// ctor
public CollectionDictionary(Func<ICollection<C>> collectionCreator)

// Create
base.Add(key, _collectionCreator());

// Init
new CollectionDictionary<Guid, int>(() => new HashSet<int>());

暫無
暫無

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

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