Ich habe log4net in meiner App integriert. Ich habe ein paar Hilfsmethoden zur Unterstützung bei der Protokollierung, die log4net aufrufen. Beim Refactoring plane ich, diese Methoden in die Basisklasse zu verschieben, damit der Code in anderen abgeleiteten Klassen nicht wiederholt wird.Log4net - optimale Strategie bei der Vererbung
Ohne das Vererbungsmodell, nach korrekt in jeder Klasse gearbeitet
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
die oben in der Basisklasse Platzierung wird die Deklaration Typ als Basisklasse und nicht abgeleitete Klasse zurück.
Wie kann diese Deklaration optimal in die Basisklasse verschoben werden?
Momentan kann ich mir ein paar Wege vorstellen, um das zu erreichen, finde sie aber nicht optimal.
Danke Stefan. Also müsste ich "Log" nicht statisch machen? – byte
Oder schreiben Sie im Basisklassenkonstruktor etwas wie if (BaseClass.Log == null) {BaseClass.Log = LogManager.GetLogger (this.GetType()); } // Angenommen, Log ist immer noch private static in BaseClass – byte
Es kann nicht statisch sein, weil Sie eine Instanz pro abgeleiteter Klasse benötigen. –