Como corrigir um aviso do compilador C # descartável do CA2000, ao usar um cache global
CA2000 é um aviso sobre a interface IDisposable:
CA2000: Microsoft.Reliability: No método 'ImportProcessor.GetContext (string)', chame System.IDisposable.Dispose no objeto 'c' antes que todas as referências a ele estejam fora do escopo.
My método é usado para armazenar um cache de contexto da seguinte forma:
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;
}
Onde você usaria ousing()
instrução que corrige esse aviso do compilado
Minha classe externa realmente itera e descarta o conteúdo nocontextCache
em sua própria implementação. Devo suprimi-lo ou existe uma maneira de me livrar corretamente desse aviso?