risposta

13

Si dovrebbe nascondere il "utente corrente" dietro un'astrazione:

public interface ICurrentUser 
{ 
    string Name { get; } 
} 

Questa astrazione dovrebbe essere definito nel livello di business e avete bisogno di creare un'implementazione specifica ASP.NET che si inserisce nel Composition Root:

public class AspNetCurrentUser : ICurrentUser 
{ 
    public string Name 
    { 
     get { return HttpContext.Current.Session["user"]; } 
    } 
} 

Ora il vostro oggetto di business-layer può dipendere l'interfaccia ICurrentUser, e in Unity è possibile registrare l'applicazione come segue:

container.RegisterType<ICurrentUser, AspNetCurrentUser>(); 
+0

Esiste comunque lo scopo senza utilizzare proprietà statiche? Fondamentalmente se voglio basarlo su HttpRequestContext o sul Controller stesso, come faccio? –

+0

@CharlesPrakashDasari: fai una nuova domanda [qui] (https://stackoverflow.com/questions/ask) e pubblica un link a tale domanda come commento a questa risposta. – Steven