Как кешировать результаты метода в .Net - PullRequest
1 голос
/ 05 мая 2010

Используя веб-методы, кэширование результатов довольно просто с использованием атрибута "CacheDuration". Существует ли аналогичный «простой» способ кэширования выходных данных без веб-методов (или статических методов) на основе параметров?

Буду признателен за любую помощь. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 02 мая 2012

Этот вопрос выглядит примерно так: Есть ли способ кэширования функции / метода в C #

Правильный термин для того, что вы хотите, это памятка . Википедия дает более подробную информацию на эту тему. К сожалению, нет ссылки на библиотеку C #, поддерживающую его. Существуют различные способы реализовать это самостоятельно. Но так как я не опытный в C #, я не могу дать больше подробностей. Некоторые методы, которые можно использовать: AOP, Аннотации, Прокси.

0 голосов
/ 05 мая 2010

Самый простой способ реализовать кеш - использовать словарь или аналогичную структуру данных в вашем классе для хранения результатов в памяти для последовательных вызовов.

public class CachedDatastore
{
    private Dictionary<string, object> cache = new Dictionary<string, object>();

    public void FindById(string id)
    {
        if (!cache.ContainsKey(id))
        {
            var data = GetDataFromDatabase(id);
            cache[id] = data;
        }

        return cache[id];
    }
}

Это просто базовый пример, если вы хотите попробовать что-то реализовать самостоятельно. Он не поддерживает «вытеснение» из кеша или повторную загрузку данных в любое время. Если вам нужны более продвинутые функции, я бы порекомендовал в .NET Framework найти классы кэша или другие сторонние библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...