Ieri sera stavamo facendo dei test e mi sono imbattuto in un simpatico errore

"Unable to cast object of type 'System.String' to type 'System.Web.HttpCookie'"

L'errore era dato su una riga che per me era assolutamente innocua:

foreach (HttpCookie cookie in cookies)

(dove "cookies" è di tipo HttpCookieCollection).

Preso dallo sconforto, ho iniziato a guardare in giro, mi sono ricordato che l'implementazione del foreach non è una scienza esatta e mi sono lanciato su un for:

for (int i=0; i<=cookies.Count;i++)
{
      HttpCookie cookie = cookies[i];
      ......

Ed ovviamente tutto funzionava.....

Testa che ti ritesta (e che ti rigira) viene fuori che HttpCookieCollection nel foreach restituisce un'array ... di stringhe! Praticamente ti serve il GetAllKeys con cui poi ti devi andare a recuperare il cookie....
Quindi, visto che nel progetto ho sempre usato il foreach dove possibile, ho cambiato il tutto in:

foreach (string cookieName in cookies)
{
      HttpCookie cookie = cookies[cookieName];
      ......

Ora però l'unico dubbio che mi rimane è.... ma perchè mai non esporre direttamente oggetti HttpCookie? C'è qualche limite logico che mi sfugge??