C# 路由覆盖

C# 路由覆盖,c#,asp.net-core,asp.net-core-routing,C#,Asp.net Core,Asp.net Core Routing,如果控制器中存在某些操作,我正在寻找一种覆盖操作调用的方法 想象一下: [Route("api/[controller]")] public partial class UsersController : BaseController { [HttpGet("Friends/{id}")] public IActionResult GetFriends(int id) { // some code } 然后我在另一个文件中: [Route("api/[contr

如果控制器中存在某些操作,我正在寻找一种覆盖操作调用的方法

想象一下:

[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

我怎样才能让asp路线与“自定义”(如果存在)相匹配?

经过漫长的一天,我发现我们可以在RouteAttribute中使用。这正是我需要的

没有办法做到这一点。使用适当的对象继承和重写。您是如何决定何时
/users/friends
转到
GetFriends
GetFriends\u custom
?是否将所有
/users/friends
路由到
GetFriends\u custom
?如果是这样,请尝试使用多个(版本/客户端)的应用程序。每个版本继承基础版本(主分支),因此,例如,客户端1可能使用与基础版本相同的GetFirend,但客户端2将使用GetFirend_自定义。因此,在client2分支中,我们有一个具有GetFriend_自定义的分部类@克里斯普拉特,在这种情况下,超控无效。这是我听过的最复杂的事情。源代码管理没有继承的概念。如果您有多个版本的代码存放在不同的分支中,所有这些分支都基于master,那么这意味着您必须实际将master合并到这些分支中的每个分支中,或者重新设置每个分支的基础。无论采用哪种方式,都可能出现任何数量的问题,然后您需要为每个客户机分支提供单独的集成管道,以确保对master的一次更改不会破坏任何特定客户机分支中的某些内容。一想到它,我就头疼。你可以通过配置轻松处理这个问题,当一个客户端需要不同的东西时,你可以在代码中进行分支。然后,您只需要处理一个代码库,不需要像部分类那样愚蠢地插入功能。