Trong ASP.NET MVC, lớp ActionResult
, đó là cơ sở cho tất cả các kết quả trả về bởi phương pháp hành động từ một bộ điều khiển, được định nghĩa là một lớp trừu tượng với phương pháp duy nhất (© Microsoft):Lý do đằng sau ASP.NET MVC ActionResult là một lớp trừu tượng?
public abstract void ExecuteResult(ControllerContext context);
bạn có thể nghĩ ra bất kỳ lý do cụ thể cho thiết kế này? Cụ thể, nó có vẻ hơi lạ với tôi, rằng
- không có giao diện
IActionResult
, - và rằng lớp sẽ không được yêu cầu ở tất cả, nếu có một giao diện như vậy.
Sau khi tất cả, nếu điều này là một giao diện thay vì rằng lớp trừu tượng, thì sẽ không có nhu cầu để mở rộng một lớp cơ sở để tạo ra một mới ActionResult
- người ta sẽ chỉ phải thực hiện IActionResult
đúng cách. Trong một thế giới, ngôn ngữ err, không có nhiều thừa kế, lợi thế này có vẻ khá quan trọng đối với tôi.
Tôi đã gửi email cho Phil Haack (PM về ASP.NET MVC tại Microsoft) với một liên kết đến câu hỏi này, hy vọng anh ấy sẽ tìm thấy thời gian để giải thích trong vài ngày tới. –
Ý tưởng hay, cảm ơn bạn. – hangy
Có trường hợp cụ thể nào mà bạn bị chặn trong trường hợp cụ thể này không? – Haacked