I'd encourage you to try to sort the methods I've listed into the two categories I'm about to describe for you. And in the future, I'd encourage you to try to categorize interfaces and public class definitions in this way. Doing so will improve your ability to read and internalize new software features quickly, and leverage them efficiently, instead of copying code snippets from StackOverflow.com until you find something that works. That said, let's take a look at the state management functions.
First, we have the Create methods. Each of these methods will return a usable instance of a concrete WebRequest sub-class. They're all static, and so can be invoked from the class definition without first needing to create ...