Vraag : Het bewaren van en het terugwinnen van voorwerp aan dossier die XML in VS2005 gebruiken

Ik probeer om een generische methode tot stand te brengen om een voorwerp uit te bewaren aan een dossier en het opnieuw terug te winnen.  Ik veronderstel dat XML de manier is te gaan, maar alle voorbeelden die ik vereis een hoger niveau van .NET heb gevonden dan ik heb toegang to.

What die ik gewild=heb= ben iets in die aard:

public klassenWerknemer {
privé koordnaam = ""; /> privé koord
openbare het koordnaam openbare van de Werknemer
}
{
krijgt {terugkeer this.name; }
plaatste {this.name = waarde; }
}
openbaar koord SSN {
krijgt {terugkeer this.ssn; }
plaatste {this.ssn = waarde; }
}
}

I wil het als dit kunnen gebruiken: /> Werknemer

SaveObject (emp, @ " c:\temp\myemp ");

… en toen later
Werknemer emp = RetrieveObject (@ " c:\temp\m yemp ");

Can wordt dit gedaan met VS2005?  Wat zouden de methodes bevatten?

Antwoord : Het bewaren van en het terugwinnen van voorwerp aan dossier die XML in VS2005 gebruiken

Het is ingewikkelder dan het verschijnt zodat heb ik één of andere code vastgemaakt die het (zie verder) als PHP klasse zal doen. Dit is slechts een zeer eenvoudige mand maar het kan gemakkelijk worden uitgebreid.

Het wordt zo gebruikt als

$b = nieuwe myBasket („basketName“);    // u verscheidene manden, enkel gebruiks unieke namen kunt in werking stellen

$b->addItem ($productCode);  // voegt 1 punt toe

$b->addItem ($productCode2, 10);   // voegt een hoeveelheid van 10 voor productCode2 toe


Om de mand te tonen

$items = $b->fetchAllItems ();
$qty = $b->fetchAllQtys ();

foreach ($items als $index=> $aProductCode) {

     code $aProductCode van het echo de „Product heeft {$qty [$index]} punten
„;
}
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
sessName = $name. „_bskt“;
          $this->sessQty  = $name. „_qty“;

          $this->initialise ();
     }





     //  Privé methodes 


     // Opslag de huidige serie in een zittingsvariabele
     //
     privé functie updateBasket () {
          $_SESSION [$this->sessName] = vervaardig in series ($this->basket);
          $_SESSION [$this->sessQty]  = vervaardig in series ($this->qty);
     }



     // initialiseert de mand
     //
     de privé functie initialiseert () {

          // Controle als de zitting lopend is en als zo de bestaande mand terugwin
          //
          als (isset ($_SESSION [$this->sessName]) && isset ($_SESSION [$this->sessQty])) {
               $this->basket = unserialize ($_SESSION [$this->sessName]);
               $this->qty    = unserialize ($_SESSION [$this->sessQty]);
          }
          anders {
               $this->basket = serie ();
               $this->qty    = serie ();
               $this->updateBasket ();
          }

     }



     //  Openbare methodes 


     Leeg // de mand uit
     //
     duidelijke functie () {

          unset ($_SESSION [$this->sessName]);
          unset ($_SESSION [$this->sessQty]);
          $this->initialise ();
     }



     // voegt een voorwerp aan het eind van de lijst toe
     //
     // Parameters: $item - een op te slaan voorwerp
     //             $num - een hoeveelheid dat, gebreken aan 1 moet worden opgeslagen
     //
     functie addItem ($item, $num=1) {
          // verzekert het indexenverblijf in stap door het hoogst terug te winnen
          // bestaande index en het verhogen van het
          //
          $ctr = tel ($this->basket);

          als ($ctr > 0) {
               $lastKey = eind (array_keys ($this->qty));
               $ctr = $lastKey + 1;
          }

          $this->basket [$ctr] = $item;
          $this->qty    [$ctr] = $num;

          $this->updateBasket ();
     }



     // verwijdert een punt uit de lijst - identificeer me door het mandaantal.
     // NOTA DAT HET VERWIJDEREN VAN EEN PUNT NIET DE AANTALLEN VAN DE MAND IN DE SERIES TERUGSTELT.
     //
     // Parameters: $basketNumber - de index van de serieingang om uit de serie te verwijderen
     //
     functie rmvItem ($basketNumber) {

          als (telling ($this->basket) > 0) {

               // 001 Controle dat een punt alvorens zijn verwijdering te proberen bestaat
               //
               als (isset ($this->basket [$basketNumber]  )) {
                    unset ($this->basket [$basketNumber]);
                    unset ($this->qty [$basketNumber]);
                    $this->updateBasket ();
               }
          }
     }



     // Haal een punt
     //
     // Parameters: $basketNumber - de index van de serieingang van de serie terug te winnen
     //
     functie fetchItem ($basketNumber) {
          als (telling ($this->basket) > 0) {
               terugkeer $this->basket [$basketNumber];
          }
     }



     // Haal een hoeveelheid voor een punt
     //
     // Parameters: $basketNumber - de index van qty om van de serie terug te winnen
     //
     functie fetchItemQuantity ($basketNumber) {
          als (telling ($this->qty) > 0) {
               terugkeer $this->qty [$basketNumber];
          }
     }


     // Verandering een bepaald punt in de lijst
     //
     // Parameters: $basketNumber - de index van het voorwerp aan update
     //             $anItem - een voorwerp
     //
     functie chgItem ($basketNumber, $anItem) {
          als ($basketNumber >= 0 telling && ($this->basket) > 0) {
               // 001 Controle dat een punt alvorens zijn verwijdering te proberen bestaat
               //
               als (isset ($this->basket [$basketNumber]  )) {
                    $this->basket [$basketNumber] = $anItem;
                    $this->updateBasket ();
               }
          }
     }



     // Verandering een bepaalde puntenhoeveelheid in de lijst
     //
     // Parameters: $basketNumber - de index van het voorwerp aan update
     //             $qty - de nieuwe hoeveelheid
     //
     chgQty functie ($basketNumber, $qty) {
          als ($basketNumber >= 0 telling && ($this->qty) > 0) {

               // 001 Controle dat een punt alvorens zijn verwijdering te proberen bestaat
               //
               als (isset ($this->basket [$basketNumber]  )) {
                    $this->qty [$basketNumber] = $qty;
                    $this->updateBasket ();
               }
          }
     }



     // krijgt een lijst van alle punten in de mand
     //
     functie fetchAllItems () {
          terugkeer $this->basket;
     }



     // krijgt een lijst van alle die punthoeveelheden in de mand worden opgeslagen
     //
     functie fetchAllQtys () {
          terugkeer $this->qty;
     }



     // keert de telling van het aantal punten in de mand terug
     //
     functie countBasket () {
          terugkeer array_sum ($this->qty);
     }



} // Eind van klasse myBasket
Andere oplossingen  
 
programming4us programming4us