[英]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.