Question

Voici comment je gérer habituellement des objets dans l'état de session, j'ai une chaîne const comme le nom de la session, puis une propriété avec get et set pour l'objet.

Ce que je me demandais était si le « Session.Remove () » appel était nécessaire (pour garder les choses propre et bien rangé) et s'il y avait des frais généraux et importants à faire cette suppression.

J'ai là fondamentalement la Session.Remove parce qu'il me fait me sentir mieux (TOC je sais), et me fait sentir comme la séance est plus propre, mais je voudrais savoir s'il est pas nécessaire.

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
    get
    {
        return Session[sesMyObject] as MyObject;
    }
    set
    {
        Session.Remove(sesMyObject);
        Session.Add(sesMyObject, value);
    }
}

EDIT par les réponses ci-dessous i ont changé mes propriétés à ce qui suit:

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
    get
    {
        return Session[sesMyObject] as MyObject;
    }
    set
    {
        Session[sesMyObject] = value;
    }
}

merci!

Était-ce utile?

La solution

Si vous vraiment veulent être en sécurité, essayez de convertir l'objet d'un IDisposable, et si elle réussit, appeler Dispose.

IDisposable sesDispObj =  Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
   sesDispObj.Dispose();

En dehors de cela,

 Session[sesMyObject] = value

est à peu près la même chose que

 Session.Remove(sesMyObject);        
 Session.Add(sesMyObject, value);

Autres conseils

Il est surpuissant. MSDN

  

Si le paramètre nom fait référence à une   élément de l'état de session existant,   est remplacée par l'élément existant   valeur spécifiée.

Session[sesMyObject] = value;

est plus court, plus simple à lire, et devrait avoir une performance légèrement meilleure, mais à moins que ce code est répété un grand nombre de fois de suite, il ne devrait pas faire une différence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top