Не удалось вызвать службу из aspnetboilerplate контроллера проекта asp.net-core - PullRequest
0 голосов
/ 29 апреля 2019

Работа на Базовая структура ядра Aspnet , застрявшая в одной проблеме, из-за того, что мой контроллер не смог вызвать службы.

Библиотека классов приложений содержит IEmployeeService и EmployeeService, как их вызвать из моего EmployeeController .

Сервис

    public interface IEmployeeService
    {
        int CreateEmployee(CreateEmployeeDto data);
        IEnumerable<EmployeeListDto> GetEmployeeList();

    }
 public class EmployeeService : IEmployeeService
    {
}

Контроллер

    [AbpMvcAuthorize]
    public class EmployeeController : HRISControllerBase
    {


        private readonly IEmployeeService _employeeService;

        public EmployeeController(           
            IEmployeeService employeeService
           )
        {

            _employeeService = employeeService;           
        }

        public ActionResult Index()
        {
            return View();
        }
}

Примечание. Нужно ли проекту настраивать что-либо в ConfigureServices в файле Startup.cs.

Ответы [ 4 ]

1 голос
/ 29 апреля 2019

Реализация ITransientDependency.

public class EmployeeService : IEmployeeService, ITransientDependency
{
    // ...
}

С https://aspnetboilerplate.com/Pages/Documents/Dependency-Injection#helper-interfaces:

ASP.NET Boilerplate предоставляет в качестве ярлыков интерфейсы ITransientDependency , IPerWebRequestDependency и ISingletonDependency .

1 голос
/ 29 апреля 2019

Вы можете использовать зарегистрированный класс в Startup.cs class.here asp..net core предоставляют встроенный DI.

1 голос
/ 29 апреля 2019

Вам необходимо зарегистрировать его в методе ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IEmployeeService, EmployeeService>();
}
0 голосов
/ 03 мая 2019

В соответствии с документами

"ASP.NET Boilerplate автоматически регистрирует все репозитории, доменные службы, службы приложений"

как таковые всевам нужно изменить IEmployeeService на наследование от IApplicationService:

public interface IEmployeeService : IApplicationService
{
    int CreateEmployee(CreateEmployeeDto data);
    IEnumerable<EmployeeListDto> GetEmployeeList();
}
...