Вы не можете с помощью наследования от HttpWebRequest (если вы не хотите вызывать конструктор сериализации), но вы можете с помощью композиции и делегирования, а также с помощью наследования от WebRequest (я не уверен, что это будет делать для Вы, но функционально это довольно похоже). В WebRequest есть конструктор по умолчанию.
В этом случае у вас не может быть класса «быть» HttpWebRequest (как в отношении is-a), поскольку вы не можете расширять его, но он будет «веб-запросом», которого должно быть достаточно .
Вы можете написать класс, который наследует от WebRequest, который имеет член экземпляра типа WebRequest, создать HttpWebRequest и назначить члену экземпляра в конструкторе нового типа и делегировать все вызовы этой ссылке (своего рода шаблон декоратора). ):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
namespace ClassLibrary1
{
public class MyHttpWebRequest : WebRequest
{
private WebRequest request;
public MyHttpWebRequest(string uri)
{
request = HttpWebRequest.Create(uri);
}
public override WebResponse GetResponse()
{
// do your extras, or just delegate to get the original code, as long
// as you still keep to expected behavior etc.
return request.GetResponse();
}
}
}