WebRequest- это абстрактный класс, который имеет фабричный метод, Createкоторый, в зависимости от переданного URL-адреса, создает экземпляр конкретного подкласса. Нужны вы или хотите,
HttpWebRequest httpreq = (HttpWebRequest)WebRequest.Create(strUrl);а не
WebRequest req = WebRequest.Create(strUrl);зависит от ваших потребностей и от того, какие URL-адреса вы передаете.
Если вы передаете только URL-адреса HTTP:, тогда предыдущий код позволяет вам получить доступ к свойствам и методам, которые подкласс HttpWebRequestреализует в дополнение к тем, которые определены в базовом классе WebRequest. Но если вы передали URL-адрес FTP :, попытка преобразования HttpWebRequestзавершится неудачей.
Последний является общим и не даст сбоев ни для одного из типов поддерживаемых URL-адресов, но, конечно, без преобразования в какой-либо подкласс вы можете получить доступ только к свойствам и методам, которые определяет базовый класс.
- через Мартина Хоннена