【发布时间】:2018-08-07 18:37:39
【问题描述】:
如果控制器中存在某些操作,我正在寻找一种方法来覆盖操作调用。
想象一下:
[Route("api/[controller]")]
public partial class UsersController : BaseController {
[HttpGet("Friends/{id}")]
public IActionResult GetFriends(int id) {
// some code
}
然后我在另一个文件中:
[Route("api/[controller]")]
public partial class UsersController : BaseController {
[HttpGet("Friends_custom/{id}")]
public IActionResult GetFriends_custom(int id) {
// some code
}
我希望我的前端只调用
/users/friends
如果存在 _custom,我如何获得与 _custom 匹配的 asp 路由?
【问题讨论】:
-
没有办法做到这一点。使用适当的对象继承和覆盖。
-
您是如何决定何时将
/users/friends转到GetFriends和GetFriends_custom?你会将所有/users/friends路由到GetFriends_custom吗?如果是这样,请尝试URL rewrite -
它是一个具有多个(版本/客户端)的应用程序,每个版本都继承基本版本(主分支),因此例如客户端 1 可能使用与基本版本相同的 GetFirend,但客户端 2 将使用 GetFirend_Custom。因此,在客户端 2 分支中,我们有具有 GetFriend_Custom 的部分类。 @ChrisPratt,在这种情况下,覆盖将不起作用。
-
这是我听过的最令人费解的事情。源代码管理没有继承的概念。如果您的代码的多个版本都基于 master 存放在不同的分支中,那么这意味着您必须实际将 master 合并到每个分支中或重新设置每个分支。无论哪种方式,都可能出现任何数量的问题,然后您需要为每个客户端分支使用单独的集成管道,以确保对 master 的一次更改不会破坏任何特定客户端分支中的某些内容。想想就头疼。
-
您可以轻松通过配置来处理这个问题,并在一个客户需要不同的东西时分支代码。然后,您只需处理一个代码库,并且不需要像部分类这样愚蠢的功能来存根。
标签: c# asp.net-core asp.net-core-routing