Почему System.Net.Http.HttpMethod класс, а не перечисление?
HttpStatusCode
реализуется как enum
, причем каждое возможное значение присваивается соответствующему коду статуса HTTP (например, (int)HttpStatusCode.Ok == 200
).
Однако HttpMethod
реализован как class
со статическими свойствами для получения экземпляров для различных HTTP-глаголов (HttpStatus.GET
, HttpStatus.PUT
и т.д.). В чем причина не реализации HttpMethod
как enum
?
Ответы
Ответ 1
Из документации (выделено мной):
Примечания
Наиболее распространенным применением HttpMethod является использование одного из статических свойств этого класса. Однако, если для HTTP-метода требуется другое значение, конструктор HttpMethod инициализирует новый экземпляр HttpMethod с помощью HTTP-метода, который указывает приложение.
Это, конечно, невозможно с перечислением.
См. конструктор и свойство метода.