[ Fedya @ 17.09.2007. 17:27 ] @
Znam da je jednostavno, ali mi u ovom trenutku nista ne pada na pamet.
Znaci, treba mi singleton u asp.net-u ali da bude na nivou sessije.

Code:

using System;
public class Singleton
{
private static Singleton instance;
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}


To je pattern, ali meni ne pije vodu posto ne mogu koristiti static, posto svaki session mora imati razlicitu instancu. Ono sto sam pokusao je nesto kao:

Code:

public static Global GetGlobalInstance()
    {
        Global retVal;
        if (Session["Global"] != null)
        {
            retVal = Session["Global"];
        }
        else
        {
            retVal = new Global();
            Session["Global"] = retVal;
        }

        return retVal;
    }
}


ali ovo opet nije moguce zato sto se (logicno) ne moze pristupiti Session objektu iz static metode.

Takodje hteo bih da izbegnem instaniciranje neke 'privremene' klase na svakoj stranici.
[ StrokaviKod @ 17.09.2007. 18:58 ] @
Mozes da pristupas Session objektu i iz static klase:
HttpContext.Current.Session["Global"].
[ Fedya @ 18.09.2007. 11:54 ] @
Hvala na odgovoru, ali znao sam to, i to ne radi. Iz nekog razloga Session objekat je uvek null.
Mislim da je to neka novina u 2.0... posto sam skoro siguran da sam to radio u 1.1 bez problema....

Cak i ako pozovem taj Session iz metode obrade eventa (znaci mnogo nakon session_start i page_load), dobijam null reference.
[ mmix @ 18.09.2007. 17:54 ] @
Kao prvo to sto ti hoces nije singleton, jer ako postoji jedna instanca po sesiji onda nije single, ne?

Pretpostavljam da hoces da imas na raspolaganju instancu tog objekta bez da u stranicama razmisljas o tome da li je ili nije taj objekat kreiran. Ako je to onda ga jednostavno kreiraj u Session_Start ako je session["global"] == null, kad izvrsavanje dodje do stranice objekat ce sigurno postojati...