Как добавляется контроллер/сервис Open API?C#

Место общения программистов C#
Ответить
Anonymous
 Как добавляется контроллер/сервис Open API?

Сообщение Anonymous »

Я использую NSwag для создания кода контроллера для службы Open API C#
Затем в Program.cs это просто простой код из примера проекта

Код: Выделить всё

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
Я могу запустить и протестировать сервис, и здесь все в порядке.
Но чего я не понимаю, так это того, что я не указываю сгенерированный контроллер имя класса в вызове метода builder.Services.AddControllers() или app.MapControllers().
Как среда выполнения узнает, какой контроллер ей следует использовать, в чем/где заключается магия?
Это что-то сделано путем отражения в базовой структуре? Я имею в виду зациклить все классы и найти те, которые реализуют интерфейс контроллера?
Если это так, то какую-либо причину, по которой он спроектирован таким образом, немного сложно понять.
Для grpc или размещенной службы нам как минимум нужно указать класс (services.AddGrpcClient/services.AddHostedService) для его обработки, но почему бы не использовать открытый контроллер API?

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-is-added
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»