Grandi risposte da parte dei ragazzi, ma ti metterei in guardia dal fare sempre affidamento sulla Sessione. È rapido e facile farlo, e ovviamente funzionerebbe ma non sarebbe eccezionale in tutte le circostanze.
Ad esempio, se ti imbatti in uno scenario in cui il tuo hosting non consente l'utilizzo della sessione o se ti trovi in una Web farm o nell'esempio di un'applicazione SharePoint condivisa.
Se si desidera una soluzione diversa, è possibile utilizzare un contenitore IOC come Castle Windsor , creando una classe provider come wrapper e mantenendo un'istanza della classe utilizzando lo stile di vita per richiesta o sessione in base alle proprie esigenze.
Il CIO assicurerebbe che la stessa istanza venga restituita ogni volta.
Più complicato sì, se hai bisogno di una soluzione semplice basta usare la sessione.
Ecco alcuni esempi di implementazione di seguito per interesse.
Utilizzando questo metodo è possibile creare una classe di provider sulla falsariga di:
public class CustomClassProvider : ICustomClassProvider
{
public CustomClassProvider(CustomClass customClass)
{
CustomClass = customClass;
}
public string CustomClass { get; private set; }
}
E registralo come:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<ICustomClassProvider>().UsingFactoryMethod(
() => new CustomClassProvider(new CustomClass())).LifestylePerWebRequest());
}