Asp.net web api 常见功能的WebApi控制器动作参数基类
如果WebApi控制器操作共享相同的功能,例如分页和部分响应,是否可以创建基类来建模这些参数 例如,此URI: 可能映射到:Asp.net web api 常见功能的WebApi控制器动作参数基类,asp.net-web-api,Asp.net Web Api,如果WebApi控制器操作共享相同的功能,例如分页和部分响应,是否可以创建基类来建模这些参数 例如,此URI: 可能映射到: class AthletesController { IHttp Get(bool clean, string[] fields, int offset, int limit) { ... } } 但是,字段、偏移量和限制是经常使用的概念。所以我想要这样的东西: abstract class ActionParameter {
class AthletesController
{
IHttp Get(bool clean, string[] fields, int offset, int limit)
{
...
}
}
但是,字段
、偏移量
和限制
是经常使用的概念。所以我想要这样的东西:
abstract class ActionParameter
{
public string[] fields;
public int offset;
public int limit;
}
class AthletesGetParameter : ActionParameter
{
public bool clean;
}
class AthletesController
{
IHttp Get(AthletesGetParameter param)
{
...
}
}
我能做吗?是的,你绝对能做。在本例中,如果您为复杂对象指定以下参数,ASP.NET将处理参数绑定:
public class AthletesController : ApiController
{
public string Get([FromUri] AthletesGetParameter athletesGetParam)
{
// ...
}
}
在你的问题中,我唯一反对的是抽象类的名称。它并没有很好地描述基类以及它的用途。可能类似于抽象类分页参数
或类似的内容。称之为ActionParameter
可能会让您将来(或其他程序员)感到困惑,认为所有的动作参数都应该派生这个类,我认为这是不对的
也许是关于基类命名的细节,但要回答您的直接问题是的,您可以做到这一点这也可以通过将其全局添加到您的WebApiConfig中来实现,这样您就不必在每个控制器操作中都对其进行标记:
config.ParameterBindingRules.Insert(0,描述符=>
typeof(ActionParameter).IsAssignableFrom(descriptor.ParameterType)
?新建FromUriaAttribute().GetBinding(描述符)
:空);
谢谢你的回答。命名没有考虑。试图提供一个例子。我同意你的反馈。@DavidOsborne啊,我也这么认为。很高兴能帮忙!