Is it just me, or is the name of the UriBuilder class somewhat misleading? It doesn't actually help you "build" anything. It simply offers the same level of abstraction that the Uri class already offers, except the properties can be modified.
I would think the best value-add the UriBuilder could provide would be in building the querystring - that is, being able treat the querystring as a NameValueCollection, a la Request.QueryString, and having the object automatically handling the escaping and so on.
Instead, I've found that UriBuilder actually makes working with the querystring more difficult! The object simply exposes the query as a string, and doesn't seem to provide any other support for working with it. On top of that, if you construct from a Uri that already has a GET querystring, the ? is included as the first character in the Query property. In turn, calling UriBuilder.ToString() seems to concatenate the pieces - and in the process adds a question mark between the Path and Query properties, so you end up with two question marks!
Another question: why make the static Uri.EscapeString() protected, and providing that functionality instead through HttpUtility?
Maybe I'm missing something here - which, as I've said in the past, is a distinct possibility - but why not just support a read-only flag in the Uri constructor or something?
Anyone care to shed some light on this??
