Я выполнял анализ кода VS2013 в одном из моих текущих проектов и наткнулся на "CA1001: Типы, которые располагают одноразовыми полями, должны быть одноразовыми". Простым примером, генерирующим предупреждение (предположим DisposableClass
реализует IDisposable
), является:
class HasDisposableClassField
{
private DisposableClass disposableClass;
}
Однако преобразование переменной поля в свойство больше не генерирует предупреждение, даже если обстоятельство заключается в том, что свойство будет создаваться классом:
class HasDisposableClassProperty
{
private DisposableClass disposableClass { get; set; }
public HasDisposableClassProperty()
{
disposableClass = new DisposableClass();
}
}
В первом случае ясно, что класс должен реализовать шаблон IDisposable и соответствующим образом утилизировать его поле DisposableClass
. Мой вопрос: является ли отсутствие предупреждения для второго случая ограничением инструмента анализа кода? Должен ли класс по-прежнему реализовать IDisposable и избавиться от свойства, несмотря на отсутствие предупреждения?