¿Cómo evitar un defecto “DisposableFieldsShouldBeDisposedRule” en campos que no quiero a disponer?

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

  •  13-10-2019
  •  | 
  •  

Pregunta

Hay un IDisposable que contiene un campo para el Registrador:

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

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

informes Gendarme que hay una DisposableFieldsShouldBeDisposedRule Defectos, pero no quieren disponer el registrador.

Puede alguien ayudarme?

¿Fue útil?

Solución

Configuración de lado por la cual no se quiere disponer de él; si no desea disponer de él, probablemente no debería estar almacenando en un miembro de IDisposable, a continuación. El único propósito real de que la interfaz es para indicar / activar ese elemento que está dispuesto.

Si se trata de un objeto de registro, no hay otra base común de interfaz / clase se puede utilizar, como una deriva de Stream o StreamWriter?

Ahora que he escrito esto, por supuesto, me parece que esto todavía incluye IDisposable en la jerarquía ... que supongo que nos lleva de nuevo a lo que dije que iba a dejar de lado:

¿Por qué estás aquí establecimiento de una variable que no tiene intención de eliminar? Si va a desechar en otro lugar, probablemente debería utilizar también allí. El código que está envolviendo el objeto registrador debe manejar toda la funcionalidad de la misma, incluyendo la exposición de la interfaz independiente de los objetos de modelo / negocio que habilita el registro.

Básicamente, si usted está encapsulando el registro en otro objeto, entonces no deberías estar haciendo referencia a la corriente de la tala objeto fuera interno de ese objeto. Si no va a encapsular el registro en otro lugar, entonces esta clase debe disponer de él adecuadamente.

scroll top