У меня есть концепция сеанса, в котором объекты хранятся в различных состояниях.
Иногда мне нужно сканировать сеанс на предмет объектов, соответствующих определенному запросу, но я делаю это часто, и тестирование производительности показало, что это становится узким местом в некоторых областях.
Поэтому я хотел бы представить концепцию индексов в сеансе.
Что-то вроде ...
public IDictionary<K, V> GetIndex<K, V>(Func<V, K> keySelector)
Однако я не уверен, как проверить "равенство" такого Func. Очевидно, я хочу, чтобы индекс создавался только при первом вызове GetIndex и последующих вызовах, чтобы он не создавался снова.
Как мне сопоставить их внутренне, чтобы выполнять поиск существования индекса?
IDictionary<???, IDictionary<K, V>> indexes = ...
В принципе, как мне хранить ???. Возможно, я не могу сделать это с помощью Func, но, возможно, есть другой способ.