asp.net core 获取服务实例的几种方式

在ASP.NET Core中,我们可以使用以下几种方式来获取服务:

  1. 构造函数注入(Constructor Injection):在需要使用服务的类的构造函数中声明对应的服务类型参数,ASP.NET Core会自动将对应的服务实例注入进来。例如:
csharp 复制代码
public class MyService
{
    private readonly ILogger<MyService> _logger;

    public MyService(ILogger<MyService> logger)
    {
        _logger = logger;
    }

    // 使用_logger进行日志记录等操作
}
  1. 方法参数注入(Method Parameter Injection):在需要使用服务的方法中,直接声明对应的服务类型参数,ASP.NET Core会自动将对应的服务实例注入进来。例如:
csharp 复制代码
public IActionResult Index([FromServices] ILogger<HomeController> logger)
{
    // 使用logger进行日志记录等操作
    return View();
}
  1. 属性注入(Property Injection):在需要使用服务的类中,声明属性,并通过[FromServices]特性标记,ASP.NET Core会自动将对应的服务实例注入进来。例如:
csharp 复制代码
public class MyController : Controller
{
    [FromServices]
    public ILogger<MyController> Logger { get; set; }

    public IActionResult Index()
    {
        // 使用Logger进行日志记录等操作
        return View();
    }
}
  1. 服务提供程序(Service Provider):可以通过HttpContext.RequestServices属性来获取IServiceProvider实例,然后使用GetService或GetRequiredService方法获取对应的服务实例。例如:
csharp 复制代码
public IActionResult Index()
{
    var logger = HttpContext.RequestServices.GetService<ILogger<HomeController>>();
    // 使用logger进行日志记录等操作
    return View();
}

以上就是ASP.NET Core中获取服务的几种常见方式。不同的方式适用于不同的场景,请根据具体情况选择合适的方式。

相关推荐
涡能增压发动积14 小时前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
Wenweno0o14 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
swg32132114 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
tyung14 小时前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald14 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川14 小时前
深入拆解 Java 内存模型:从原子性、可见性到有序性,彻底搞懂 happen-before 规则
java·后端
元宝骑士14 小时前
FIND_IN_SET使用指南:场景、优缺点与MySQL优化策略
后端·mysql
用户319523703477114 小时前
记一次 PostgreSQL WAL 日志撑爆磁盘的排查
后端
nghxni14 小时前
LightESB PlatformHttp v3.0.0:JSONPath 订单转换 HTTP 路由实战
后端
武子康15 小时前
大数据-263 实时数仓-Canal 增量订阅与消费原理:MySQL Binlog 数据同步实践
大数据·hadoop·后端