He integrado log4net en mi aplicación. Tengo algunos métodos de ayuda para ayudar en el registro que llaman a log4net. Al refactorizar, planeo mover estos métodos a la clase base para que el código no se repita en otras clases derivadas.Log4net: estrategia óptima al usar la herencia
Sin el modelo de herencia, siguiendo funcionado correctamente en cada clase
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Colocación de la anterior en la clase base devolverá el tipo que se declara como clase base y no derivadas clase.
¿Cuál es una forma óptima de trasladar esta declaración a la clase base?
Actualmente, puedo pensar en algunas formas de lograr esto pero no las encuentro óptimas.
Gracias Stefan. Entonces, ¿necesitaría hacer que "Log" no sea estático? – byte
O en el constructor de la clase base escriba algo como if (BaseClass.Log == null) {BaseClass.Log = LogManager.GetLogger (this.GetType()); } // suponiendo que el registro sigue siendo privado estático en BaseClass – byte
No puede ser estático porque necesita una instancia por clase derivada. –