Язык программирования C#9 и платформа .NET5 - Страница 640
Изменить размер шрифта:
В первой строке расширяющего метода в контейнер DI добавляется
ApiServiceSettingsIApiServiceWrapperHTTPClientIApiServiceWrapperHTTPClientHTTPClientpublic static IServiceCollection ConfigureApiServiceWrapper(this IServiceCollection services, IConfiguration config){ services.Configure<ApiServiceSettings>( config.GetSection(nameof(ApiServiceSettings))); services.AddHttpClient<IApiServiceWrapper,ApiServiceWrapper>(); 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 async Task<IActionResult> Index() => View(await _serviceWrapper.GetCarsAsync());[HttpGet("/")]