Hei!
Osaako joku kertoa miten .net:llä (versio 2) saa tehtyä geneerisen readonly dictionaryn eli sellaisen dictionaryn jonka avaimen ja arvon tyypin voi määrittää deklaraatiossa, mutta jota ei voi alustuksen jälkeen muuttaa? (l. Add, Remove ja muiden objektia muuttavien metodien tulisi heittää exception).
Listalle tämä onnistuu List.AsReadOnly() metodilla, mutta Dictionarylle ei ole käsittääkseni olemassa vastaavaa metodia.
Koitin periyttää Dictionary -luokkaa omaksi luokakseni, jossa yliajoin IsReadOnly-propertyn aina trueksi, mutta dictionaryn muuttaminen koodissa onnistui silti ilman ajonaikaista virhettä.
~UL
Tee abstracti luokka
Jossa privatena tuo dictionary-olio
ja tiedot syötetään rakentajassa
tämän jälkeen periytät tuon abstractin luokan, jolloin
directory olio on piilossa.
Tuon dictionaryn arvoja pitää pystyä lukemaan, mutta ei muuttamaan joten pelkästään tuo piilotus privaten avulla ei taida auttaa tässä tapauksessa...
~UL
juu ei suoraan joutunee jokaista lukutapaa vastaavan metodin kirjoittamaan tuohon abstractiin luokkaan tai sitten tehdä ominaisuus joka palauttaa dictionarystä cloonin, silloin ei cloonin muuttaminen vaikuta alkuperäiseen mitenkään.
Aihe on jo aika vanha, joten et voi enää vastata siihen.