Анализ кода VS2005: CA1063 (вызов dispose (true) и supress finalize) - с ведением журнала
-
19-08-2019 - |
Вопрос
Я пытаюсь придерживаться правил анализа кода 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
Не прибегая к прагматическим директивам, есть ли способ обойти это? Возможно, написание моих собственных правил? Кроме того, есть ли существующие правила в сборке, где я могу посмотреть с помощью отражателя?
Решение
Вы можете поместить инструкцию log в метод Dispose (bool dispose), чтобы соответствовать рекомендациям:
public void Dispose(bool disposing)
{
if (disposing)
{
Console.WriteLine("...");
}
...
}