October 2006 Blog Posts

HttpRequest::QueryString e ::ToString()

Oggi un collega mi ha fatto notare un'apparente anomalia che non avevo mai notato. L'invocazione del metodo QueryString::ToString(), es ...Response.Write( QueryString.ToString() );... produce una rappresentazione testuale della query string (es. a=1&b=2). La cosa è logica se non fosse per il fatto che la proprietà QueryString di HttpRequest è di tipo System.Collections.Specialized.NameValueCollection, classe che non ridefinisce l'implementazione standard del metodo ToString() e che quindi dovrebbe restituire una stringa con il nome della classe ("System.Collections.Specialized.NameValueCollection" appunto).In realtà la spiegazione si trova andando a decompilare il codice della proprietà HttpRequest::QueryString: il membro privato relativo alla proprietà viene inizializzato con una istanza della classe internal HttpValueCollection...

posted @ Thursday, October 19, 2006 12:50 PM | Feedback (2)