Как получить словарь с анонимным значением из кэша в asp.net - PullRequest
0 голосов
/ 31 января 2012

Я создал словарь из результата запроса Linq, как это было предложено из ответа на вопросы stackoverflow: Словарь, где значение является анонимным типом в C #

var intToAnon = sourceSequence.ToDictionary(
e => e.Id,
e => new { e.Column, e.Localized });

Я добавил этот новый объект в кеш ASP.NET. Как я могу прочитать это из кэша (HttpContext.Current.Cache.Add)? Я думаю, мне нужно отражение, но не знаю, как это сделать.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 31 января 2012

Чтобы получить анонимный тип, вам нужно либо использовать отражение, либо приведение примера , но в этом случае ни одна из них не является хорошей идеей.

Вместо этого либо создайтеваш собственный пользовательский тип для хранения данных или используйте один из встроенных типов Tuple:

// dict will be a Dictionary<TId, Tuple<TColumn, TLocalized>>
// where TId, TColumn and TLocalized are the actual types of those properties
var dict = sourceSequence.ToDictionary(e => e.Id,
                                       e => Tuple.Create(e.Column, e.Localized));
Cache["yourCacheKey"] = dict;

Затем, когда вы получите объект из кэша, просто приведите его ксоответствующий Tuple тип:

// i'm assuming here that Id is Int32, Column is String, and Localized is Boolean
var dict = (Dictionary<int, Tuple<string, bool>>)Cache["yourCacheKey"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...