Предупреждение FxCop CA2000 в пользовательских элементах управления - PullRequest
1 голос
/ 11 июня 2010

Запуск FxCop для WebProject, который содержит UserControl, приведет к предупреждению CA2000 (вызов System.IDisposable.Dispose on object) для каждого ServerControl (Label, TextBox, ...) в этом UserControl.

Я понимаю, почему это произойдет.Замена «оскорбляющих» ServerControls на PlaceHolder, а затем добавление элементов управления в коде (Использование ... Завершение использования) может быть способом обойти это, но это не всегда вариант.Но, если они не «кошерные», почему ServerControls вы можете в первую очередь добавить в ascx / aspx?Я что-то упускаю?

Если, как и в моем случае, вы унаследовали значительную коллекцию довольно сложных элементов UserControls, я теперь добавляю каждый «оскорбительный» элемент управления в файл GlobalSupperssions (это много ума, ощелкнув)?Я не хочу подавлять все предупреждения CA2000, поскольку имеет смысл исправлять их, но не в случае ServerControls в UserControls.

1 Ответ

0 голосов
/ 11 июня 2010

Хм, всем действительно нравится инструмент, который скажет им, что они забыли вызвать Dispose (). Проблема в том, что такой инструмент действительно сложно реализовать. Специальное предупреждение, о котором вы говорите, теперь отключается и включается несколько раз.

Очевидно, что предупреждение, которое вы получили, является ерундой, UserControl уже знает, как правильно расположить свои элементы управления. Это просто не то, что автоматизированный инструмент может легко обнаружить. Вызов dispose удален на миллион миль от вызова конструктора и похоронен в коде платформы .NET с несколькими виртуальными методами и обработчиками событий.

Чтобы действительно оценить эти предупреждения, вам придется переключиться на другой инструмент: тот, который у вас между ушами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...