Реализация Force API Controller - PullRequest
1 голос
/ 19 марта 2019

Я хотел бы иметь реализацию для конкретного контроллера API, которая будет реализована с помощью Microsoft.AspNetCore.Owin, для создания API отдыха с ядром .net.

Я хотел бы дать другимВозможность реализации собственных, аналогичных контроллеров, но также имеет некоторые ограничения на то, что они должны реализовывать.Например:

[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?Я не совсем уверен, как подойти к проблеме, и любая помощь будет оценена.

Большое спасибо!

1 Ответ

2 голосов
/ 19 марта 2019

Невозможно унаследовать от вашего контроллера сохранение атрибутов и изменение только тела напрямую (по крайней мере, не в чистом виде). ​​

Лучший вариант - добавить промежуточный слой (абстрактный класс) и использоватьэто в вашем контроллере.Чем другие пользователи могут реализовать абстрактный класс (не контроллер напрямую) со своей собственной логикой.

...