Как исправить предупреждение компилятора CA2000 IDisposable C # при использовании глобального кеша

CA2000 - это предупреждение относительно интерфейса IDisposable:

CA2000: Microsoft. Надежность: В метод 'ImportProcessor.GetContext (string)', вызовите System.IDisposable.Dispose на объекте 'c' до того, как все ссылки на него будут вне области видимости.

Мой метод используется для хранения кеша контекста следующим образом:

public class RegionContext : IDisposable { /* Implement Dispose() here */ } 

private Dictionary<string, RegionContext> contextCache = new ..... ();

public RegionContext GetContext(string regionCode)
{
    RegionContext rc = null;

    if (!this.contextCache.TryGetValue(regionCode.ToUpper(), out rc))
    {
        rc = new RegionContext(regionCode);
        this.contextCache.Add(regionCode.ToUpper(), rc);
    }

    return rc;
}

Где бы вы использовали оператор using () , который исправляет это предупреждение компилятора?

Мой внешний класс действительно выполняет итерацию и удаляет содержимое в contextCache в своей собственной реализации. Должен ли я подавить его или есть способ избавиться от этого предупреждения?

6
задан Dominic Zukiewicz 13 July 2011 в 19:05
поделиться