2009-01-24 21 views
5

Estoy agregando algunas pruebas a una clase que utiliza HttpContext.Current.Session internamente y estamos migrando a ASP.NET MVC. Mi clase es el siguiente:Prueba de una clase con HttpContext.Current.Session en ASP.NET MVC

class Foo 
{ 
    public void foo() 
    { 
     HttpContext.Current.Session["foo"] = "foo"; 
    } 
} 

pensé para cambiar de esta manera:

class Foo 
{ 
    IHttpSessionState session; 

    public Foo() : this(HttpContext.Current.Session) {} 

    public Foo(IHttpSessionState session) 
    { 
     m_session = session; 
    } 

    public void foo() 
    { 
     m_session["foo"] = "foo"; 
    } 
} 

El problema es con el constructor por defecto. No puedo pasar las clases antiguas ya que no implementan las nuevas interfaces ASP.NET MVC.

¿Hay alguna forma de obtener las instancias que implementan IHttpSessionState en el constructor predeterminado?

Gracias

Respuesta

5

Prueba de esto, que utilizan la envoltura IHttpSessionState que utiliza el framework MVC.

class Foo 
{ 
    // member variable set by constructor 
    IHttpSessionState m_session; 

    // if no session is passed it attempts to create a new session state wrapper from the current session 
    public Foo() : this(new HttpSessionStateWrapper(HttpContext.Current.Session)) {} 

    public Foo(IHttpSessionState session) 
    { 
     m_session = session; 
    } 

    public void foo() 
    { 
     m_session["foo"] = "foo"; 
    } 
} 
Cuestiones relacionadas