2009-05-25 8 views
0

Je suis à la recherche d'une façon élégante d'avoir AppContext configuré à droite et voici ce:WebForms asp.net émulation de l'Etat dans l'env apatride

public class AppContext : IAppContext 
{ 
    public AppContext() 
    { 
     Application = new AppStorage(); // app scoped hashtable 
     Local = new LocalStorage();  // current thread scoped hashtable 
     Session = new SessionStorage(); // session for some reasons hashtable 
    } 

    public CultureInfo Culture { get; set; }  // session scoped 
    public UserProfile AuthProfile { get; set; } // session scoped 

    public IStorage Application { get; private set; } // application 
    public IStorage Session { get; private set; }  // session 
    public IStorage Local { get; private set; }  // current thread 
    public IStorage WcfSession { get; private set; } // wcf session 

    private ISecurityWriter SecurityWriter;   // session scoped 
    private ISecurityContext SecurityContext;   // session scoped 

    /// 1. START WEB CONTEXT 
    /// 2. START WCF CONTEXT 
} 

Je suis actuellement équilibre entre a)

public class Global : HttpApplication 
{ 
    public static AppContext Context; 

    protected void Application_Start(object sender, EventArgs e) 
    { 
     Context = new AppContext(); 
    } 
} 

mais je n'aime pas le ideea d'avoir

Global.Context.Sesstion.Set<Order>(theOrderInstance); 

b) et l'ajout de Appco ntext suivantes lignes

public class AppContext{ 
private static AppContext instance; 

public AppContext Instance 
{ 
    get{ 
     if(instance == null) 
      instance = new AppContext(); 
     return instance; 
    } 
} 

ce n'est pas aussi agréable à regarder

AppContext.Instance.Session.Set<Order>(theOrderInstance); 

QUESTION: J'aime l'idée d'avoir

AppContext.Session.Set<Order>(theOrderInstance); 

tout toughs comment y parvenir? quelque chose OSS et pertinent pour ce sujet serait grandement apprécié

ont le plaisir :)

Répondre

0

Que diriez-vous de cette façon?

protected AppContext Instance 
{ 
    get{ 
     if(instance == null) 
      instance = new AppContext(); 
     return instance; 
    } 
} 

public IStorage Session 
{ 
    get{ 
     return Instance.Session; 
    } 
} 
+0

mmmm ... dans votre façon, je n'aime pas idée d'ajouter des redirecteurs pour chaque membre ajouté à AppContext – ruslander

0

regarder ici:

public static class AppContextExtensions 
{ 
    public static AppContext Context(this Page page) 
    { 
     return AppContext.Instance; 
    } 
} 

utilisation

this.Context().Session.Set<Order>(theOrderInstance) 

et je suis heureux avec elle :)

Questions connexes