Principio della singola responsabilità: Responsabilità sconosciuta [chiusa]

-1

Conservo le sessioni in SessionManager . Il gestore della sessione ha una dipendenza da ISessionPersister .

SessionManager

private readonly ISessionPersister sessionPersister;
public SessionManager(ISessionPersister sessionPersister)
{
    this.sessionPersister = sessionPersister;
}


ISessionPersister

public interface ISessionPersister : IDisposable
{
    void PersistSessions(Dictionary<string, ISession> sessions);
}

D: Se la mia applicazione chiude come / dove chiamo PersistSessions ? Chi è il responsabile?

Primo approccio: usa Dispose in SessionManager

protected virtual void Dispose(bool disposing)
{
    if (disposing)
    {
       if (this.sessionPersister != null && this.sessionMap != null && this.sessionMap.Count > 0)
       {
           this.sessionPersister.PersistSessions(this.sessionMap);
        }
    }
}

È la strada da percorrere o ci sono soluzioni migliori?

    
posta lurkerbelow 07.07.2012 - 17:24
fonte

1 risposta

2

Dipende dal tipo di applicazione. Ad esempio, in un'applicazione WinForms è possibile utilizzare l'evento Form.Closing del modulo principale. Esiste anche un evento Application.ApplicationExit , che funziona indipendentemente da qualsiasi forma.

    
risposta data 07.07.2012 - 18:13
fonte

Leggi altre domande sui tag