У меня странная проблема, и это единственное, о чем я могу думать. Я храню список в кеше и случайно теряю элементы из своего списка, когда пользователи используют сайт. У меня есть класс, который называется, который либо идет в кэш и возвращает оттуда список, либо, если кэш устарел в течение определенного периода времени, он идет в базу данных и обновляет кэш. Поэтому, когда я извлекаю данные из кеша, это выглядит так ...
results = (List<Software>)cache["software"];
А потом я возвращаю результаты и выполняю некоторую обработку, фильтрую для безопасности, и в конце концов она появляется на экране. К каждой записи программного обеспечения может быть подключено несколько ресурсов, и в зависимости от того, как идет защита, они могут видеть некоторые, все или ни одну из записей. Таким образом, при проверке безопасности он удалит некоторые из этих ресурсов из записи программного обеспечения.
Так что мой вопрос ... когда я возвращаю свой список результатов, это ссылка непосредственно на объект кеша? Итак, когда я удаляю ресурс из объекта программного обеспечения, он действительно также удаляется из кэша? Если это так, есть ли способ не вернуть его в качестве ссылки? Спасибо!
edit: Я думаю, что я, возможно, только что ответил на свой вопрос ... так что, если я сделаю что-то вроде этого:
results = new List<Software>((List<Software>)cache["software"]);
это скопирует кэшированный список в мой список результатов, верно?