强制 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
),它将具有 AddItems
和 MultiplyItems
两种方法,但是有没有办法强制 Route
和 HttpMethod
个属性?
基本上我想让其他用户可以选择更改 api 端点的主体而不更改 Route
或 HttpMethod
属性。
也许另一种方法是创建一些 abstract class
将具有 virtual
的方法?我不太确定如何解决这个问题,如有任何帮助,我们将不胜感激。
非常感谢!
不可能从您的控制器继承来保留属性并直接仅更改主体(至少不是以干净的方式)。
最好的选择是添加一个中间层(抽象 class)并在您的控制器中使用它。其他用户可以用自己的逻辑实现抽象class(不是直接控制器)。
我想要一个特定 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
),它将具有 AddItems
和 MultiplyItems
两种方法,但是有没有办法强制 Route
和 HttpMethod
个属性?
基本上我想让其他用户可以选择更改 api 端点的主体而不更改 Route
或 HttpMethod
属性。
也许另一种方法是创建一些 abstract class
将具有 virtual
的方法?我不太确定如何解决这个问题,如有任何帮助,我们将不胜感激。
非常感谢!
不可能从您的控制器继承来保留属性并直接仅更改主体(至少不是以干净的方式)。
最好的选择是添加一个中间层(抽象 class)并在您的控制器中使用它。其他用户可以用自己的逻辑实现抽象class(不是直接控制器)。