core手动获取注入服务实例

更新时间:2023-07-14 19:58:31 阅读: 评论:0

core⼿动获取注⼊服务实例
第⼀种获取⽅式(有时会获取不到,不推荐使⽤):
var rvices = new ServiceCollection();
var provider = rvices.BuildServiceProvider();
var _valueService = provider.GetService<IValueService>();
第⼆种获取⽅式(推荐使⽤):
public void Configure(IApplicationBuilder app)
{
ServiceLocator.Instance = app.ApplicationServices;扫一室与扫天下
}
public static class ServiceLocator
{
public static IServiceProvider Instance { get; t; }
}
public void SomeRandomMethod()
评课表
{
var valueService = ServiceLocator.Instance.GetService<IValueService>();
// Do something with rvice
}
补充:需要注意的是,使⽤ServiceLocator.Instance.GetService(); ,只能获取AddTransient和AddSingleton注⼊的对象,⽽不能获取AddScoped(请求⽣命周期内唯⼀)注⼊的对象,不是不能获取,⽽是获取的和构造函数获取的不是相同对象,也就是说获取的对象没有共享,使⽤场景⽐如IUnitOfWork。
那怎么⼿动获取请求⽣命周期内的注⼊对象呢?⽅法如下:
政务公开的意义
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace Sample.Domain
{
窗帘品牌排行>栀子花修剪public class SampleDomainService : IDomainService
三一九枪击事件{
安澜桥
private IUnitOfWork _unitOfWork;
public SampleDomainService(IHttpContextAccessor httpContextAccessor)
{
_unitOfWork = httpContextAccessor.HttpContext.RequestServices.GetService<IUnitOfWork>();
}鸡腿汉堡
}
}

本文发布于:2023-07-14 19:58:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1081553.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:获取   对象   栀子花   排行   品牌   需要
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图