微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – ASP.NET MVC ActionResult背后的推理是一个抽象类吗?

ASP.NET MVC中,ActionResult类是操作方法从控制器返回的所有结果的基础,它被定义为使用单一方法的抽象类(©Microsoft):
public abstract void ExecuteResult(ControllerContext context);

你能想到这个设计的具体原因吗?具体来说,对我来说似乎有点奇怪

>没有IActionResult接口,
>如果有这样的界面,那根本就不需要这个类.

毕竟,如果这是一个接口而不是那个抽象类,那么就不需要扩展基类来创建一个新的ActionResult – 只需要正确实现IActionResult即可.在一个世界上,错误的语言,没有多重继承,这个优势对我来说似乎非常重要.

解决方法

接口非常适合允许类实现多个合同,例如当您知道类型必须是两个不同的东西时.在某些情况下,这可能会鼓励创建一个责任太多的类型.

行动结果只有一个责任,似乎没有任何情况下你需要一个对象同时是一个行动结果和其他东西.即使你这样做,也可以通过作曲来完成.因此,在这种情况下,我们选择ABS以便在RTM进行必要的更改后允许我们更大的灵活性.

但是,如果有一个特定的场景我们阻止接口更好,我们会考虑它.我们总是可以在以后不以破坏的方式做到这一点.

您甚至可以通过编写自己的动作调用程序来完成它,它只需要您实现IActionInvoker(一个接口),并且调用者可以检查您自己的IActionResult而不是ActionResult.

原文地址:https://www.jb51.cc/aspnet/251916.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐