Ótimas respostas dos rapazes, mas eu aconselho você a não confiar sempre na Sessão. É rápido e fácil, e é claro que funcionaria, mas não seria ótimo em todas as circunstâncias.
Por exemplo, se você se deparar com um cenário em que sua hospedagem não permita o uso da sessão, ou se você estiver em um farm da web ou no exemplo de um aplicativo compartilhado do SharePoint.
Se você queria uma solução diferente, poderia usar um contêiner do COI como o Castle Windsor , criar uma classe de provedor como um wrapper e, em seguida, manter uma instância da sua classe usando o estilo de vida por solicitação ou sessão, dependendo de seus requisitos.
O COI garantiria que a mesma instância fosse retornada toda vez.
Mais complicado, sim, se você precisar de uma solução simples, basta usar a sessão.
Aqui estão alguns exemplos de implementação abaixo sem interesse.
Usando este método, você pode criar uma classe de provedor ao longo das linhas de:
public class CustomClassProvider : ICustomClassProvider
{
public CustomClassProvider(CustomClass customClass)
{
CustomClass = customClass;
}
public string CustomClass { get; private set; }
}
E registre algo como:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<ICustomClassProvider>().UsingFactoryMethod(
() => new CustomClassProvider(new CustomClass())).LifestylePerWebRequest());
}