2016-09-27 15 views
10

HttpStatusCode được triển khai dưới dạng enum, với mỗi giá trị có thể được chỉ định cho mã trạng thái HTTP tương ứng của nó (ví dụ: (int)HttpStatusCode.Ok == 200).Tại sao System.Net.Http.HttpMethod một lớp học, không phải là một enum?

Tuy nhiên, HttpMethodimplemented as a class, với những đặc tính tĩnh để có được các trường hợp cho các động từ HTTP khác nhau (HttpStatus.GET, HttpStatus.PUT vv). Lý do đằng sau không triển khai HttpMethodenum là gì?

+0

Bạn có yêu cầu rằng nó có thể là một enum và mất các phương pháp nó có để một số lớp khác? – snit80

+1

Nó có thể là một enum, nhưng sau đó nó không thể hỗ trợ các động từ http khác so với tiêu chuẩn. Thực sự có một 'HttpMethod' enum trong không gian tên' System.Net.Cache'. – sloth

Trả lời

15

Từ (tôi nhấn mạnh) documentation:

Bình luận

Việc sử dụng phổ biến nhất của HttpMethod là sử dụng một trong những thuộc tính tĩnh trên lớp này. Tuy nhiên, nếu một ứng dụng cần một giá trị khác nhau cho phương thức HTTP, hàm tạo HttpMethod khởi tạo một cá thể mới của HttpMethod với một phương thức HTTP mà ứng dụng chỉ định.

Điều tất nhiên là không thể thực hiện được với enum.

Xem constructormethod property.

+0

Ah, điều đó giải thích nó. Câu hỏi của tôi được đưa ra chủ yếu bởi vì tôi lý luận rằng "tất cả các động từ được cho phép được quy định trong tiêu chuẩn - tại sao không chỉ liệt kê chúng?", Nhưng hỗ trợ cho động từ không chuẩn là, tôi đoán, một sự cân nhắc âm thanh ở đây. Cảm ơn bạn đã làm rõ! –

Các vấn đề liên quan