J'ai intégré log4net dans mon application. J'ai quelques méthodes auxiliaires pour aider à la journalisation qui appelle log4net. Lors du refactoring, je prévois de déplacer ces méthodes vers la classe de base afin que le code ne soit pas répété dans d'autres classes dérivées.Log4net - stratégie optimale lors de l'utilisation de l'héritage
Sans le modèle d'héritage, suivant a fonctionné correctement dans chaque classe
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Placer ci-dessus dans la classe de base retourne le type déclarant que la classe de base et non dérivée classe.
Quelle est la meilleure façon de déplacer cette déclaration vers la classe de base? À l'heure actuelle, je peux penser à quelques façons d'y parvenir, mais ne les trouve pas optimales.
Merci Stefan. Aurais-je besoin de rendre "Log" non statique? – byte
Ou dans le constructeur de classe de base écrire quelque chose comme si (BaseClass.Log == null) {BaseClass.Log = LogManager.GetLogger (this.GetType()); } // En supposant que Log est toujours private static dans BaseClass – byte
Il ne peut pas être statique car vous avez besoin d'une instance par classe dérivée. –