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
в своей собственной реализации. Должен ли я подавить его или есть способ избавиться от этого предупреждения?