0

我想使用新的 MS Web API 而不必继承ApiController

理想情况下,我想创建单独的类,只处理一个 HTTP 方法和路由。例如:

// Handles GET /customer/1
public class GetCustomerHandler
{
    public object Handle(int id)
    {
        return ...;
    }
}

// Handles PUT /customer/1
public class PutCustomerHandler
{
    public object Handle(NewCustomerForm form)
    {
        return ...;
    }
}

我想System.Web.Http有很多扩展点来允许这种方法,但我找不到合适的文档。有人可以指出我正确的方向吗?

4

1 回答 1

0

这不是预期的使用方法ApiController

我建议,如果你需要这样做,你可以在正常的路由/动作选择之上构建它。我的意思是你可以有一个控制器来调用其他类来实现这种实现。使用功能方法的一个这样的原型可能如下:

public abstract class HubController<T>
{

    private Func<int, object> _getHandler;
    private Func<T, object> _putHandler;

    public HubController(Func<int, object> getHandler, Func<T, object> putHandler
        // ... delete and post handlers too
        )
    {
        _putHandler = putHandler;
        _getHandler = getHandler;
    }

    public object Get(int id)
    {
        return _getHandler(id);
    }

    public object Put(T t)
    {
        return _putHandler(t);
    }

    // ... also Post and Delete
}

public class CustomerControler : HubController<Customer>
{
    public CustomerControler(Func<int, object> getHandler, Func<Customer, object> putHandler) : base(getHandler, putHandler)
    {
    }
}

委托可能只是委托或接口的实现,尽管我更喜欢委托,因为“单一方法的接口是委托”

于 2012-07-18T10:37:52.067 回答