2014-02-19 41 views
0
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) 
    { 
     ... 
    } 
} 

第一種方法應該返回一個公司的單用戶部分 第二種方法應該返回一個公司的列表中的用戶部分和植物網絡API已經定義了一個具有相同的參數類型「獲取」成員

錯誤類型「...」已經定義了一個名爲‘獲取’具有相同的參數類型

成員

是否有可能避免網絡API來解釋第二獲取作爲重新定義?

如果其中場景3種用途看着http://aspnetwebstack.codeplex.com/wikipage?title=Attribute%20routing%20in%20Web%20API [HTTPGET( 「...」)符號

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

但對我來說 [HTTPGET(...)] 錯誤「 System.Web.Http.HttpGetAttribute」不包含一個構造函數1個參數

+0

這不是「web api」抱怨。它應該是C#編譯器的抱怨。您不能在同一個類中使用相同的參數類型擁有兩個具有相同名稱的方法。返回類型不參與重載分辨率。 –

+0

(這種情況3的例子也出現錯誤,原因完全一樣,正如本文下面的第一條評論指出的那樣) –

+0

我希望讓C#知道它們實際上是兩種不同的重載方法。 – Gavello

回答

3

我認爲你必須命名您的GET功能:

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) 
    { 
     ... 
    } 
} 
相關問題