我有Sensor
类,其中包含很少的属性:id, a, b
。
另一个名为SensorCache
的类,负责管理我的传感器集合的内存缓存。
SensorCache
实现“缓存模式”,请参阅here
SensorCache
以传统方式工作 - 每个传感器请求(id
属性发出的请求)首先转到SensorCache
:
SensorCache
将其返回目前,我的词典键基于Sensor.id
字段。
我有一个新要求,即返回Sensor
两个字段(a
和b
)并保留我的缓存逻辑。
我的缓存对象目前是为单个属性(Sensor.id
)搜索而构建的,所以我需要考虑能够通过2个不同选项在内存中搜索的新结构:Sensor.id
或'Sensor.a'和'Sensor.b'对。
处理此问题的最佳方法是什么?
我想过拿两个不同的对象,每个对象用于各种搜索,但这种方法会消耗更多的内存(x2),所以我想在做之前先听一些其他的想法。
答案 0 :(得分:0)
您可以编写一个单独的类来实现IEquatable
并覆盖GetHashCode
(有时您必须,以实现所需的性能)但在这个简单的情况下,听起来您可以使用{{ 3}},即Dictionary<Tuple<(type of a), (type of b)>, Sensor>
。