Stavo lavorando alla migrazione su un progetto che utilizza un logger statico e un servizio di posta elettronica statico.
Il servizio di posta elettronica registra le e-mail inviate e il servizio di registrazione invia una e-mail in caso di problemi di registrazione (come il down di DB, ecc.). Se il servizio di posta elettronica non riesce, può anche registrare il problema.
Se il logger non funziona, tenta di inviare una notifica email, ma se il servizio di posta elettronica non riesce (il motivo potrebbe essere il motivo per cui il logger è stato chiamato in primo luogo), continua e scrive il problema su un file di registro.
Email Service <--statically references--> Logger Service
Il problema è che entrambi i "servizi" sono singleton, ed entrambi avrebbero bisogno di fare riferimento l'un l'altro come parametro costruttore. Il mio primo pensiero è stato l'iniezione basata sulla proprietà, ma ho scoperto rapidamente che sembra essere una situazione di accoppiamento temporale molto indesiderata.
L'idea principale ora è, a livello di log, chiamare il fornitore di servizi per creare un servizio di posta elettronica (così otterrà l'istanza singleton), ma stavo davvero cercando di mantenere la libreria di classi disaccoppiata dal . Sistema di iniezione Core. Qualcuno ha qualche raccomandazione nel caso mi manchi qualcosa?
Modifica: Dopo un po 'di riflessione, ha senso forse creare un fornitore di servizi astratto (uno di base) che può avere un altro servizio iniettato in esso? Allora potrei forse passarlo in giro in questi casi.