03. januar 2007 - 14:32Der er
8 kommentarer og 1 løsning
"global variabel"
Jeg har en mitObjekt af typen MinKlasse, som jeg referer til i hele koden, så jeg har erklæret den på følgende måde:
<script runat="server"> MinDataType mitObjekt = new MinKlasse();
public class MinKlasse { public MinKlasse() { } } [pageload],[eventhandlere],osv.
Tanken var, at jeg ville instantiere mitObjekt én gang, og ikke for hver gang der sker postback (den indlæser nogle forskellige dataset fra en webservice). Jeg ved ikke om dette er måden at gøre det på?
Jeg har prøvet bare at sige MinDataType mitObjekt; og flytte instantieringen ned i PageLoad under !IsPostBack, men det virker som om den ikke initialiseres ordentligt?
så skal du lave et statisk objekt ud af din klasse. Men det kan give problemer. Alternativt kan du gemme objekt i en session og hente det fra sessionen efter postback.
Ja, jeg valgte sesssionsløsningen. Det ser ud til at virke, hvis jeg tjekker for hver pageload, om session["objektet"]==null, og så kun opretter objektet i det tilfælde.
Nu rører du ved noget interessant - jeg havde først inmplementeret klassen som en singleton, uden rigtig at vide, at den så ville leve på applikationsniveau. Den indeholder nogle data, som kun meget sjældent ændres, så derfor ville det give mening at instantiere den én gang på serveren, og ikke for hver session. Men jeg vidste ikke, hvordan jeg skulle lave en periodisk opdatering for fange evt. ændringer i datagrundlaget. Men du siger at en statisk klasse er det samme som at lave en Singleton (med Singleton tænker jeg på Design Patterns)?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.