Рассмотрим следующий код:
public class Test
{
public async Task Do()
{
await Task.Delay(200);
using (var disposable = new Disposable())
{
disposable.Do();
}
}
}
public class Disposable : IDisposable
{
public void Do()
{
}
public void Dispose()
{
}
}
Когда я запускаю анализ кода в Visual Studio, я получаю предупреждение:
Предупреждение CA1001 Внедрение IDisposable в тесте. <Do> d__0, потому что он создает члены следующих типов IDisposable: "Одноразовые".
Почему я получаю это сообщение? Одноразовый класс расположен правильно, и я его не хранил.
Кроме того, для анализатора это выглядит нормально:
public class Test
{
public void Do()
{
using (var disposable = new Disposable())
{
disposable.Do();
}
}
}