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

Ответы на вопрос(3)

Ваш ответ на вопрос