> Ich benötige eine Hashtable deren Inhalt zur kompletten 
> Laufzeit gleich bleibt.
> 
> In dieser sind Werte hinterlegt - die ich immer wieder 
> benötige. Diese ändern sich zur kompletten Laufzeit nicht!
> 
> Wie macht man so was? Weil einmal muß man ja die Hashtable 
> mal initialisieren -und mit den Daten befüllen? Aber wie kann 
> ich die dann als Konstante deklarieren? Geht das überhaupt, 
> oder bin ich absolut auf dem Holzweg?

Erbe von Hashtable eine neue Klasse ReadOnlyHashtable und überschreibe 
* isReadOnly und isFixedSize, damit es true zurückgibt
* Add, Clear und Remove, damit es eine NotSupportedException wirft
* Clone wie gleich besprochen.

Jetzt hast Du eine Readonly-HashTable, aber keinen Wert drin.
Kein Problem: 
Erzeuge dir nur einen Konstruktor:

public Hashtable(IDictionary d) : base(d) {}

Damit ist es Dir nun möglich eine normale Hashtable mit Werten zu füllen:

HashTable ht = new HashTable(),
// mit Werten füll...

Und dann die Werte in Deine Hashtable zu übernehmen:

ReadOnlyHashTable roht = ReadOnlyHashTable(ht);

Die alte Hashtable kannst Du jetzt "wegschmeissen" und nur die
Read-Only-Variante rausgeben.

Jetzt gibt es noch die Clone-Methode zu besprechen. Damit die nicht eine
änderbare Hashtable erzeugt, musst Du diese auch überschreiben...
Etwa so muss dann der Code aussehen:

return new ReadOnlyHashTable(this);


Gruss,


Claudius

_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an