Gavello
Gavello

Reputation: 1491

Web Api already defines a member called 'Get' with the same parameter types

public class UsersController : ApiController
{
    // GET api/companies/{company_id}/users/{user_id}
    public object Get(int company_id, int user_id)
    {
       ...
    }

    // GET api/companies/{company_id}/plants/{plant_id}/users
    public IEnumerable<object> Get(int company_id, int plant_id)
    {
       ...
    }
}

The first method should return a single user part of a company The second method should return a list users part of a company and a plant

ERROR Type '...' already defines a member called 'Get' with the same parameter types

Is it possible to avoid Web Api to interpret the second Get as a redefinition?

if looked at http://aspnetwebstack.codeplex.com/wikipage?title=Attribute%20routing%20in%20Web%20API where in scenario 3 uses [HttpGet("...")]notations

public class MoviesController : ApiController
{
    [HttpGet("actors/{actorId}/movies")]
    public Movie Get(int actorId) { }
    [HttpGet("directors/{directorId}/movies")]
    public Movie Get(int directorId) { }
}

but in my case [HttpGet(...)] ERROR 'System.Web.Http.HttpGetAttribute' does not contain a constructor that takes 1 arguments

Upvotes: 3

Views: 7094

Answers (1)

nima
nima

Reputation: 6733

I think you have to name your get functions:

public class UsersController : ApiController
{
    // GET api/companies/GetByUser/{company_id}/{user_id}
    public object GetByUser(int company_id, int user_id)
    {
       ...
    }

    // GET api/companies/GetByPlanet/{company_id}/{plant_id}
    public IEnumerable<object> GetByPlanet(int company_id, int plant_id)
    {
       ...
    }
}

Upvotes: 7

Related Questions