Om wat CPU cycles en database-queries te besparen gooi ik een object in Application[] zodat het in leven blijft tussen verschillende requests door. Maar nu "opeens" wordt ik geconfronteerd met dat mijn object niet meer naar de juiste class gecast kan worden.
Ik zet een object van het type CachedStats in Application["stats"]. Bij een volgende request haal ik het er weer uit:
Daar krijg ik de error Unable to cast object of type 'CachedStats' to type 'CachedStats'.
CachedStats heb ik zelf gemaakt, het is een 'complex' object met een collection van weer andere objectjes. Allemaal erg triviaal, dat wel. En er zitten uiteraard een paar methodjes in.
Ik dus gelijk kijken met de debugger wat Application["stats"] dan wél is, maar het blijkt inderdaad gewoon een CachedStats ding te zijn... maar toch wil ie zichzelf niet laten casten. Waarom niet? Uiteraars heb ik die Application["stats"] al leeggemaakt zodat het niet een verouderde versie van de class kan zijn. Maar niks mocht baten...
Hoe los ik dit op? Of kan ik het beter op een hele andere manier doen?
/edit
Ik heb inmiddels ook het Cache object geprobeerd, die is misschien ook beter voor wat ik wil bereiken, maar het geeft nog steeds dezelfde InvalidCastException wanneer ik de stats opvraag uit de cache
/edit2
Nou, ik kan jullie vertellen dat een int[] opslaan wel werkt, hetgeen in principe mijn idee laat werken, maar niet echt een briljante oplossing is. Een zelf verzonnen object moet er toch ook in kunnen, of zie ik dat nou verkeerd
Ik zet een object van het type CachedStats in Application["stats"]. Bij een volgende request haal ik het er weer uit:
C#:
1
| CachedStats stats = (CachedStats) Application["stats"]; |
Daar krijg ik de error Unable to cast object of type 'CachedStats' to type 'CachedStats'.
CachedStats heb ik zelf gemaakt, het is een 'complex' object met een collection van weer andere objectjes. Allemaal erg triviaal, dat wel. En er zitten uiteraard een paar methodjes in.
Ik dus gelijk kijken met de debugger wat Application["stats"] dan wél is, maar het blijkt inderdaad gewoon een CachedStats ding te zijn... maar toch wil ie zichzelf niet laten casten. Waarom niet? Uiteraars heb ik die Application["stats"] al leeggemaakt zodat het niet een verouderde versie van de class kan zijn. Maar niks mocht baten...
Hoe los ik dit op? Of kan ik het beter op een hele andere manier doen?
/edit
Ik heb inmiddels ook het Cache object geprobeerd, die is misschien ook beter voor wat ik wil bereiken, maar het geeft nog steeds dezelfde InvalidCastException wanneer ik de stats opvraag uit de cache
/edit2
Nou, ik kan jullie vertellen dat een int[] opslaan wel werkt, hetgeen in principe mijn idee laat werken, maar niet echt een briljante oplossing is. Een zelf verzonnen object moet er toch ook in kunnen, of zie ik dat nou verkeerd
[ Voor 35% gewijzigd door _Thanatos_ op 04-04-2006 21:11 ]
日本!🎌