c# - IServiceScope.ServiceProvider.GetService() (.NET Core) 和 ILifetimeScope.ResolveOptional() (Autofac) 之间的区别
问题描述
我见过这样的代码示例,它通过 Autofac 从上下文中检索服务:
services.AddSingleton<ITest, Test>(sp =>
{
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
using (var scope = iLifetimeScope.BeginLifetimeScope("AUTOFAC_SCOPE_NAME"))
{
var handler = scope.ResolveOptional(test.HandlerType) as ITestHandler;
}
});
我想知道使用 .NET Core DependencyInjection 工具以这种方式进行是否有任何区别?
services.AddSingleton<ITest, Test>(sp =>
{
using (var scope = sp.CreateScope())
{
var handler = scope.ServiceProvider.GetService(test.HandlerType) as ITestHandler;
}
});
这两种方式是等价的吗?
解决方案
推荐阅读
- r - 有没有办法让所有 obs 条件保持在另一列的 top_n 值上
- awk - 如何在awk中打印字符串列表?
- java - 在 Android Studio 中使用属性作为颜色
- python - 如何识别第 30 帧并忽略其余帧?
- java - 如何在不使用 slf4j 实现的情况下解决“SLF4J:加载类失败”错误?
- timer - PREEMPT_RT_FULL 在 Linux-RT 4.19.188 中的隔离 CPU 上打破 NO_HZ_FULL
- python - Dataflow Bigquery-Bigquery 管道在较小的数据上执行,但不是在大型生产数据集上执行
- javascript - 在基于本地存储 cookie 的不工作上显示一次弹出窗口?
- android - Appium - 使用 Chrome 将文件上传到网络 - ERR_ACCESS_DENIED
- typescript - 使用 Typescript 在 VueJS2 项目中使用 Jest 进行测试