我在 ASP.NET Web API 控制器中有一个相当长的 Get() 方法。像这样的东西:
public PaginatedResult Get(int perPage = 10, int pageNum = 0, string param1 = null, [...] string param20 = null)
我想要的是能够处理请求包含不属于方法签名的查询参数的情况。也就是说,如果有人要求这样做:
/?perPage=10¶n19=foo¶m21=bar
...我想说,“嘿,'paran19' 和 'param21' 都不存在,所以它们不会影响这个查询的结果!”
我能想到的唯一处理方法是在请求上调用 GetQueryNameValuePairs(),然后使用反射将该列表与我的 Get() 方法接受的参数进行比较。不过,对于这个问题来说,这似乎有点矫枉过正。有没有更好的办法?理想情况下,一种足够灵活,可以轻松应用于多种方法。