Come evitare un difetto “DisposableFieldsShouldBeDisposedRule” sui campi che non voglio da smaltire?

StackOverflow https://stackoverflow.com/questions/4538696

  •  13-10-2019
  •  | 
  •  

Domanda

C'è un IDisposable che contiene un campo per il Logger:

class DoesNotDisposeMember : IDisposable {
  public IDisposable Logger { get; set; }

  public void Dispose ()
  {
    logger = null;
  }
}

rapporti Gendarme che c'è un DisposableFieldsShouldBeDisposedRule-Difetto , ma io non vogliono smaltire il logger.

Qualcuno può aiutarmi?

È stato utile?

Soluzione

Impostazione lato il motivo per cui non si vuole disporre di esso; se non si vuole disporre di esso, probabilmente non dovrebbe essere riporlo in un membro IDisposable, allora. L'unico vero scopo di tale interfaccia è quello di indicare / attivare tale elemento essendo disposti.

Se è un oggetto di registrazione, non c'è un'altra base comune interfaccia / classe è possibile utilizzare, come ad esempio uno derivato da Stream o StreamWriter?

Ora che ho scritto questo, naturalmente, mi colpisce che questo include ancora IDisposable nella gerarchia ... che suppongo ci riporta a quello che ho detto che avrei messo da parte:

Perché si sta impostando una variabile qui che non si intende smaltire? Prima di gettare di altrove, probabilmente si dovrebbe usare anche lì. Il codice che viene avvolgendo l'oggetto logger dovrebbe gestire tutte le funzionalità di esso, tra cui esponendo l'interfaccia separato per gli oggetti di modello / di business che consente la registrazione.

In sostanza, se si sta incapsulando la registrazione in un altro oggetto, allora non dovrebbe essere riferimento il flusso di registrazione oggetto esterno interno di tale oggetto. Se non si è incapsulare la registrazione altrove, allora questa classe dovrebbe disporne in modo appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top