我想創建一個基於.NET 4.5ASP.net的WebAPI參數綁定到複雜類型由URI
使用ASP.net的WebAPI一個REST Web服務網址都應像這樣的格式:
/values?Age=55&Height=176&Race=1&Weight=80&Gender=male&id=800001
相關的控制器看起來是這樣的:
[HttpGet]
public string Get(int id, [FromUri]Demographics demographics)
{ // etc.}
哪裏人口統計學的是,基本上只是一個DTO具有特定屬性的自定義對象。 但是,它包含具有自定義枚舉類型的一個屬性:
enum Gender
{
Female = 0,
Male
}
如果URL是上述格式的默認映射工作得很好。 但是,我當然也需要檢查url提供的參數是否正確。
默認情況下,ASP.net WebApi(afaik)會根據假定的類型(或者是否可以轉換爲該類型)映射每個參數。如果它在URI中找不到匹配的值,它似乎認爲它只是0.
現在,這將我帶入一個非常不幸的情況,其中0根據定義仍然是性別Demographics.Gender(0 〜Gender.Female)。
最簡單的解決方案是更改枚舉,使0成爲我可以檢查的「不確定」狀態。但是,我無法更改枚舉。 我可以爲Demographics對象創建自己的重載,但寧願不這樣做,因爲我認爲必須有更好的方法。
我可以明確地將性別參數綁定到URI中的參數,並且如果未提交則拋出異常?
我讀過關於類型轉換器,但我將不得不在URI字符串上工作,並認爲我將不得不實現WebApi顯然已有的很多功能。
請記住,我必須處理URI並且不能使用請求正文。