无法从aspnetboilerplate asp.net-core项目控制器调用服务

问题描述 投票:0回答:4

在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();
        }
}

注意:项目是否需要在Startup.cs文件中的ConfigureServices中配置某些内容。

c# aspnetboilerplate asp.net-boilerplate
4个回答
0
投票

根据docs

“ASP.NET Boilerplate自动注册所有存储库,域服务,应用程序服务”

因此,您需要做的就是将IEmployeeService更改为从IApplicationService继承:

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

1
投票

您需要在ConfigureServices方法中注册它:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IEmployeeService, EmployeeService>();
}

1
投票

实施ITransientDependency

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

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

ASP.NET Boilerplate提供ITransientDependency,IPerWebRequestDependency和ISingletonDependency接口作为快捷方式。


1
投票

您可以在Startup.cs类中使用已注册的类。其中asp..net核心提供了内置DI。

© www.soinside.com 2019 - 2024. All rights reserved.