Индексы в памяти

У меня есть концепция сеанса, в котором объекты хранятся в различных состояниях.

Иногда мне нужно сканировать сеанс на предмет объектов, соответствующих определенному запросу, но я делаю это часто, и тестирование производительности показало, что это становится узким местом в некоторых областях.

Поэтому я хотел бы представить концепцию индексов в сеансе.

Что-то вроде ...

public IDictionary<K, V> GetIndex<K, V>(Func<V, K> keySelector)

Однако я не уверен, как проверить "равенство" такого Func. Очевидно, я хочу, чтобы индекс создавался только при первом вызове GetIndex и последующих вызовах, чтобы он не создавался снова.

Как мне сопоставить их внутренне, чтобы выполнять поиск существования индекса?

IDictionary<???, IDictionary<K, V>> indexes = ...

В принципе, как мне хранить ???. Возможно, я не могу сделать это с помощью Func, но, возможно, есть другой способ.

8
задан Mike Q 19 May 2011 в 16:26
поделиться