У меня есть два словаря, которые действуют как кеш, давайте назовем их d1
и d2
, где d2
- это подмножество a из d1
.
Когда я обновляю словари новыми записями d1, я бы хотел, чтобы записи в d2 также обновлялись. Это можно сделать очевидным способом:
foreach(var update in updates) {
d1[update.id] = update;
if(d2.Contains(update.id))
d2[update.id] = update;
}
Но так как я хотел бы кэшировать другие подмножества (d3, d4, d5 и т. Д.), Это может быть громоздким. Поэтому я добавил метод «CopyFrom» к своему объекту, который позволяет мне поддерживать ссылку, просто копируя свойства в обновляемый объект.
foreach(var update in updates) {
d1[update.id].CopyFrom(update)
}
Таким образом, любые другие словари, имеющие ссылку на запись, не потеряют ее при обновлении d1
.
Я просто хотел бы знать, что я здесь что-то упускаю? Я просто возвращаюсь в C # после перерыва, и мое понимание очевидного может быть шатким:).