Эквивалентный SoftReference в .NET?

Я решил этот запрос, это было просто. Просто отключите ту функцию модели, которую вы хотите переопределить, а затем добавьте функцию, она будет работать. Например, если вы хотите добавить пользовательский / обновить API на модель, вам нужно сделать.

    _Model.disableRemoteMethodByName('update', false);

А затем добавьте новый удаленный метод с / update url, он будет работать. Потому что, если вы не отключите удаленную функцию модели и не создадите / обновите, она все равно будет вызывать встроенный метод / метод обновления модели, а не ваш метод custom / update.

5
задан Tony the Pony 10 March 2009 в 20:04
поделиться

4 ответа

Нет нет эквивалента. Есть ли конкретная причина почему WeakReference не сделает задания?

Вот подобный вопрос Вашему:

Почему.NET не имеет SoftReference, а также WeakReference, как Java?

0
ответ дан 14 December 2019 в 09:01
поделиться

В дополнение к Кэшу ASP.NET существует Блок Программы кэширования от группы Методов и Microsoft Patterns.

http://msdn.microsoft.com/en-us/library/cc309502.aspx

2
ответ дан 14 December 2019 в 09:01
поделиться

Возможно, класс Кэша ASP.NET (Система. Сеть. Кэширование. Кэш), помогают, мог бы достигнуть того, что Вы хотите? Это автоматически удаляет объекты, если память понижается:

Вот статья, которая показывает, как использовать класс Кэша в приложении форм окон.

2
ответ дан 14 December 2019 в 09:01
поделиться

Кэш ASP.NET дает Вам чувствительное к памяти поведение, которое Вы хотите с недостатком, что всему нужен уникальный ключ. Однако необходимо смочь держать WeakReference к объекту, который Вы поместили в кэш ASP.NET. Сильная ссылка кэша будет держать GC в страхе, пока кэш не решит, что это должно быть очищено к свободной памяти. WeakReference предоставляет Вам доступ к объекту, не делая поиска с ключом кэша.

Foo cachedData = new Foo();
WeakReference weakRef = new WeakReference( cachedData );
HttpRuntime.Cache[Guid.NewGuid().ToString()] = cachedData;

...

if ( weakRef.IsAlive )
{
    Foo strongRef = weakRef.Target as Foo;
}

Вы могли создать класс SoftReference путем расширения WeakReference вроде

class SoftReference : WeakReference
{
    public SoftReference( object target ) : base( target )
    {
        HttpRuntime.Cache[Guid.NewGuid().ToString()] = target; 
    }
}

Необходимо было бы также переопределить метод set на Цели, чтобы удостовериться, что любая новая цель входит в кэш.

2
ответ дан 14 December 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: