Excellentes réponses des gars, mais je vous déconseille de toujours vous fier à la session. C'est rapide et facile à faire, et cela fonctionnerait bien sûr, mais ce ne serait pas génial dans toutes les circonstances.
Par exemple, si vous rencontrez un scénario dans lequel votre hébergement n'autorise pas l'utilisation de session, ou si vous êtes sur une batterie de serveurs Web, ou dans l'exemple d'une application SharePoint partagée.
Si vous souhaitez une solution différente, vous pouvez envisager d'utiliser un conteneur IOC tel que Castle Windsor , en créant une classe de fournisseur en tant que wrapper, puis en conservant une instance de votre classe en utilisant le mode de vie par requête ou par session en fonction de vos besoins.
Le CIO veillerait à ce que la même instance soit renvoyée à chaque fois.
Plus compliqué oui, si vous avez besoin d'une solution simple, utilisez simplement la session.
Voici quelques exemples de mise en œuvre ci-dessous par intérêt.
En utilisant cette méthode, vous pouvez créer une classe de fournisseur du type:
public class CustomClassProvider : ICustomClassProvider
{
public CustomClassProvider(CustomClass customClass)
{
CustomClass = customClass;
}
public string CustomClass { get; private set; }
}
Et enregistrez-le quelque chose comme:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<ICustomClassProvider>().UsingFactoryMethod(
() => new CustomClassProvider(new CustomClass())).LifestylePerWebRequest());
}