The reason it cannot be inherited is because HttpWebRequest does not have a public default constructor that takes zero arguments. If you use code like this (note: not safe, you must provide proper arguments for base(..,..)
) it will compile and work:
public class SafeHttpWebRequest : HttpWebRequest
{
public SafeHttpWebRequest() : base(null, new StreamingContext()) { /* do something */ }
}