Я пытаюсь придерживаться правил анализа кода VS2005 для нового проекта. У меня есть этот метод:
public void Dispose()
{
Console.WriteLine("Dispose() called");
Dispose( true );
GC.SuppressFinalize(this);
}
(В какой-то момент консольный вызов станет вызовом log4net, и мы всегда заинтересованы в удалении журналов для некоторых наших типов).
Присутствие строки отладки консоли вызывает эту ошибку:
Ошибка 1 CA1063: Microsoft.Design: Изменить PerfectDisposableClass.Dispose (): Void так, что он вызывает Dispose (true), затем вызывает GC.SuppressFinalize для текущего экземпляра объекта ('this' или 'Me' в VB), а затем возвращается. F: \ Visual Studio 2005 \ Projects \ DisposeAndFinalize \ DisposeAndFinalize \ PerfectDisposableClass.cs 26 DisposeAndFinalize
Не прибегая к прагматическим директивам, есть ли способ обойти это? Возможно, написание моих собственных правил? Кроме того, есть ли существующие правила в сборке, где я могу посмотреть с отражателем?