asp.net Эмуляция WebForms состояния в env без состояния - PullRequest
0 голосов
/ 25 мая 2009

Я ищу элегантный способ настроить AppContext правильно, и вот оно:

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
}

В настоящее время я балансирую между а)

public class Global : HttpApplication
{
    public static AppContext Context;

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

но мне не нравится идея иметь

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

б) и добавление к AppContext следующих строк

public class AppContext{
private static AppContext instance;

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

это тоже не очень красиво выглядит

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

ВОПРОС : Мне нравится идея иметь

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

какие-нибудь проблемы, как этого добиться? что-то OSS и актуальное для этой темы будет с благодарностью

веселиться :) 1023 *

Ответы [ 2 ]

0 голосов
/ 25 мая 2009

смотрите здесь:

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

использование

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

и я доволен этим:)

0 голосов
/ 25 мая 2009

Как насчет этого?

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

public IStorage Session
{ 
   get{ 
        return Instance.Session;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...