C# 重载Get参数名在功能上很重要吗?

C# 重载Get参数名在功能上很重要吗?,c#,rest,parameters,asp.net-web-api,naming,C#,Rest,Parameters,Asp.net Web Api,Naming,当我使用以下代码时: public HttpResponseMessage Get() { return Request.CreateResponse(HttpStatusCode.OK, "Empty!"); } public HttpResponseMessage Get(int id) { return Request.CreateResponse(HttpStatusCode.OK, id); } 请求完全按照它们应该的方式工作GET:api/controller返回

当我使用以下代码时:

public HttpResponseMessage Get()
{
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!");
}

public HttpResponseMessage Get(int id)
{
    return Request.CreateResponse(HttpStatusCode.OK, id);
}
请求完全按照它们应该的方式工作
GET:api/controller
返回时主体为“Empty!”,而
GET:api/controller/12
返回时主体为“12”的200

但一旦我将代码更改为:

public HttpResponseMessage Get()
{
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!");
}

public HttpResponseMessage Get(int itemId) //changed parameter name
{
    return Request.CreateResponse(HttpStatusCode.OK, itemId);
}
所有内容都会命中默认方法并返回“Empty!”

我假设这是许多命名约定中的一个,但我找不到任何文档或其他帖子说参数必须命名为特定值


这似乎是一个语义问题,但我想知道为什么我必须为参数命名特定的东西,或者我做错了什么。为什么不能简单地执行此操作?

约定是在RouteConfig.cs中的路由表上定义的,如果更改参数名称,则应相应地更改:

 routes.MapHttpRoute(
          name: "DefaultApi",
          routeTemplate: "api/{controller}/{itemId}",
          defaults: new { itemId = RouteParameter.Optional }
      );

好的。那是一个愚蠢的疏忽。谢谢