Я не могу понять, что здесь происходит.Я создаю оболочку для коллекции Dictionary.Идея состоит в том, что, когда размер коллекции невелик, он будет использовать обычный словарь в памяти;но при достижении порогового числа элементов он будет внутренне переключаться на словарь на диске (я использую класс ManagedEsent PersistentDictionary).
Ниже приведен фрагмент версии на диске.При компиляции происходит сбой со следующей ошибкой:
"Тип 'T_KEY' нельзя использовать как параметр типа 'TKey' в универсальном типе или методе 'Microsoft.Isam.Esent.Collections.Generic.PersistentDictionary».Там нет преобразования или преобразования параметра типа из 'T_KEY' в 'System.IComparable'. "
Итак, я изменил определение класса так:
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...
}