Читать книгу 📗 "Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю"
В первой строке расширяющего метода в контейнер DI добавляется
ApiServiceSettingsIApiServiceWrapperHTTPClientIApiServiceWrapperHTTPClientHTTPClientpublic static IServiceCollection ConfigureApiServiceWrapper(this IServiceCollection services, IConfiguration config){<b> services.Configure<ApiServiceSettings>(</b><b> config.GetSection(nameof(ApiServiceSettings)));</b><b> services.AddHttpClient<IApiServiceWrapper,ApiServiceWrapper>();</b> return services;}Откройте файл
Startup.csusingusing AutoLot.Services.ApiWrapper;Перейдите к методу
ConfigureServices()services.ConfigureApiServiceWrapper(Configuration);Построение класса CarsController
Текущая версия
CarsControllerCarsControllerCarsControllerCarsDalControllerControllersCarsControllerCarsControllerНа заметку! При работе с одной и той же базой данных вам редко придется применять вместе уровень доступа к данным и оболочку службы. Здесь показаны оба варианта, чтобы вы смогли решить, какой из них лучше подходит в вашей ситуации.
Приведите операторы
usingusing System.Threading.Tasks;using AutoLot.Dal.Repos.Interfaces;using AutoLot.Models.Entities;using AutoLot.Services.ApiWrapper;using AutoLot.Services.Logging;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.Rendering;Далее сделайте класс открытым, унаследуйте его от
ControllerRouteIAutoLotServiceWrapperIAppLoggingnamespace AutoLot.Mvc.Controllers{[Route("[controller]/[action]")]public class CarsController : Controller{ private readonly IApiServiceWrapper _serviceWrapper; private readonly IAppLogging<CarsController> _logging; public CarsController(IApiServiceWrapper serviceWrapper, IAppLogging<CarsController> logging) { _serviceWrapper = serviceWrapper; _logging = logging; }}Вспомогательный метод GetMakes()
Вспомогательный метод
GetMakes()SelectListMakeIdNameinternal async Task<SelectList> GetMakesAsync()=> new SelectList( await _serviceWrapper.GetMakesAsync(), nameof(Make.Id), nameof(Make.Name));Вспомогательный метод GetOneCar()
Вспомогательный метод
GetOneCar()Carinternal async Task<Car> GetOneCarAsync(int? id) => !id.HasValue ? null : await _serviceWrapper.GetCarAsync(id.Value);Открытые методы действий
Единственное отличие между открытыми методами действий в этом контроллере и аналогичными методами в
CarsDalController[Route("/[controller]")][Route("/[controller]/[action]")]public <b>async Task<IActionResult></b> Index() => View(<b>await _serviceWrapper.GetCarsAsync()</b>);[HttpGet("{makeId}/{makeName}")]