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