[英]Unable to constrain generic type
我不知道這里發生了什么。 我正在為Dictionary集合構建包裝器。 這個想法是,當集合的大小很小時,它將使用普通的內存字典; 但是,當達到項目的閾值數量時,它將在內部切換到磁盤上的Dictionary(我使用的是ManagedEsent PersistentDictionary類)。
下面是磁盤版本的片段。 編譯時,它失敗並顯示以下錯誤:
“類型'T_KEY'不能用作通用類型或方法'Microsoft.Isam.Esent.Collections.Generic.PersistentDictionary <TKey,TValue>'中的類型參數'TKey'。沒有裝箱轉換或類型參數轉換從“ T_KEY”到“ System.IComparable <T_KEY>”。
因此,我將類定義修改為:
class DiskDictionary<T_KEY, T_VALUE> : IHybridDictionary<T_KEY, T_VALUE>
where T_KEY : System.IComparable
認為可以解決問題,但沒有成功。 我也嘗試限制IHybridDictionary的定義,但這沒有任何效果。 有什么想法嗎?
DiskDictionary的原始定義:
class DiskDictionary<T_KEY, T_VALUE> : IHybridDictionary<T_KEY, T_VALUE>
{
string dir;
PersistentDictionary<T_KEY, T_VALUE> d;
public DiskDictionary(string dir)
{
this.dir = dir;
//d = new PersistentDictionary<T_KEY, T_VALUE>(dir);
}
... some other methods...
}
您的DiskDictionary
類需要指定T_KEY
實現IComparable<TKey>
:
class DiskDictionary<T_KEY, T_VALUE> : IHybridDictionary<T_KEY, T_VALUE>
where T_KEY : System.IComparable<T_KEY>
{
}
該接口既有通用版本又有非通用版本,您指定的是錯誤的版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.