不实用的UriBuilder类

在.net中有个System.UriBuilder类,提供修改Uri实例内容的方便方法,无需每次创建新的Uri实例。例。但是这个类并不实用,正如tmarman所说,(System.UriBuilder.GetType() == typeof(Worthless)) 。有很多朋友写过这方面的文章,也有各自的实现。但对于.net类库来说,只需一点点改动就能实现的功能,为什么会漏掉,从1.x 到2.0依然如此。

首先Fragment和Query两个成员属性只能设置其中之一,用Reflector可以看到:Query

Query

这里不知道为什么要设置Fragment为Empty;Fragment同样设置Query为Empty,即使通过HttpRequest取不到Url的Fragment段标记 (#) 的文本,根本用不着只取其中之一。

说这个类不实用主要是因为不能对Url的QueryString进行操作。而我们对于Uri对象的修改最主要的还是对QueryString的操作,向Url中添加或移除键值对。要实现确实很容易,只需新建一个继承于UriBuilder的类,定义一个NameValueCollection的属性。具体的代码可以看这里:UrlBuilder.cs 。代码很简单,在codeproject上也有类似的文章,不过他有一个bug,不能移除项。

posted @ 2006-03-31 10:23  tsyung  阅读(3027)  评论(0编辑  收藏  举报