首页 > 解决方案 > 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;
            }
});

这两种方式是等价的吗?

标签: c#dependency-injection.net-coreautofac

解决方案


推荐阅读