The sub-classes of the WebRequest class

For a lot of typical use cases, you can rely on the basic functionality provided by the underlying WebRequest class. However, you'll never actually be using instances of it directly in your code (you can't... it's abstract, remember?), so now is the time to look at what other functionality or features exist when you're using common concrete instances of it. We'll look at each of the sub-classes for which WebRequest has a default, preregistered handler.