Я получаю предупреждение, когда запускаю какой-либо код с помощью утилиты анализа кода Visual Studio, и я не знаю, как решить эту проблему. Может кто-то сталкивался с подобной проблемой, решал ее и готов поделиться своим мнением.
Я программирую специально окрашенную ячейку, используемую в элементе управления DataGridView. Код напоминает:
public class DataGridViewMyCustomColumn : DataGridViewColumn
{
public DataGridViewMyCustomColumn() : base(new DataGridViewMyCustomCell())
{
}
Он генерирует следующее предупреждение:
CA2000: Microsoft.Reliability: в методе DataGridViewMyCustomColumn.DataGridViewMyCustomColumn() вызовите System.IDisposable.Dispose для объекта new DataGridViewMyCustomCell() до того, как все ссылки на него будут вне области видимости.
Я понимаю, что он предупреждает меня, что DataGridViewMyCustomCell (или класс, от которого он наследуется) реализует интерфейс IDisposable, и метод Dispose() должен вызываться для очистки любых ресурсов, заявленных DataGridViewMyCustomCell, когда он больше не существует.
Примеры, которые я видел в Интернете, предлагают использовать блок для определения времени жизни объекта и автоматического его удаления системой, но база не распознается при перемещении в тело конструктора, поэтому я не могу написать использование блок вокруг него... что я не уверен, что хотел бы делать в любом случае, так как не будет ли это указывать среде выполнения освобождать объект, который все еще может быть использован позже внутри базового класса?
Тогда мой вопрос, код в порядке? Или как его можно было бы реорганизовать, чтобы устранить предупреждение? Я не хочу подавлять предупреждение, если это действительно не уместно.