Domanda

Sto cercando di aderire alle regole di analisi del codice VS2005 per un nuovo progetto. Ho questo metodo:

public void Dispose()
{
    Console.WriteLine("Dispose() called");
    Dispose( true );
    GC.SuppressFinalize(this);
}

(La chiamata della console diventerà una chiamata log4net ad un certo punto e siamo sempre interessati a registrare lo smaltimento per alcuni dei nostri tipi).

La presenza della riga di debug della console genera questo errore:

Errore 1 CA1063: Microsoft.Design: modifica PerfectDisposableClass.Dispose (): annulla in modo da chiamare Dispose (true), quindi chiama GC.SuppressFinalize sull'istanza dell'oggetto corrente ('this' o 'Me' in VB), quindi restituisce. F: \ Visual Studio 2005 \ Projects \ DisposeAndFinalize \ DisposeAndFinalize \ PerfectDisposableClass.cs 26 DisposeAndFinalize

Senza ricorrere alle direttive del pragma c'è un modo per aggirare questo? Forse scrivendo le mie regole? Inoltre, aer le regole esistenti in un'assemblea da qualche parte che posso guardare con il riflettore?

È stato utile?

Soluzione

È possibile inserire l'istruzione di registro all'interno del metodo Dispose (bool disposing) da mantenere all'interno delle linee guida:

public void Dispose(bool disposing)
{
  if (disposing)
  {
     Console.WriteLine("...");
  }
  ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top