Решение Михаэля, похоже, не работает при конвертации в VB.Net. Следующие две функции были протестированы в рамках VS 2017:
0 является предупреждением относительно интерфейса IDisposable:
CA2000: Microsoft.Reliability: В методе «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
в собственной реализации. Должен ли я подавить это или есть способ правильно избавиться от этого предупреждения?