当前位置:  开发笔记 > 后端 > 正文

ASP.NET MVC ActionResult背后的推理是一个抽象类吗?

如何解决《ASP.NETMVCActionResult背后的推理是一个抽象类吗?》经验,为你挑选了1个好方法。

在ASP.NET MVC中,ActionResult该类是操作方法从控制器返回的所有结果的基础,它被定义为具有单个方法的抽象类(©Microsoft):

public abstract void ExecuteResult(ControllerContext context);

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

没有IActionResult界面,

并且如果有这样的接口,则根本不需要该类.

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



1> Haacked..:

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

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

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

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

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有