强制 API 控制器实现

Force API Controller implementation

我想要一个特定 API 控制器的实现,它将用 Microsoft.AspNetCore.Owin 实现,用于创建一个带有 .net 核心的休息 api。

我想为其他人提供实现他们自己的类似控制器的选项,但也对他们必须实现的内容有一些限制。例如:

[RoutePrefix("calculator")]
public class CalculatorController
{
    [HttpGet]
    [Route("add/{int1}/{int2}")]
    public int AddItems(int int1, int int2)
    {
        return int1 + int2;
    }

    [HttpGet]
    [Route("multiply/{int1}/{int2}")]
    public int MultiplyItems(int int1, int int2)
    {
        return int1 * int2;
    }
}

我想我可以创建一个接口(例如 ICanCalculate),它将具有 AddItemsMultiplyItems 两种方法,但是有没有办法强制 RouteHttpMethod 个属性?

基本上我想让其他用户可以选择更改 api 端点的主体而不更改 RouteHttpMethod 属性。

也许另一种方法是创建一些 abstract class 将具有 virtual 的方法?我不太确定如何解决这个问题,如有任何帮助,我们将不胜感激。

非常感谢!

不可能从您的控制器继承来保留属性并直接仅更改主体(至少不是以干净的方式)。

最好的选择是添加一个中间层(抽象 class)并在您的控制器中使用它。其他用户可以用自己的逻辑实现抽象class(不是直接控制器)。