【发布时间】:2018-10-22 06:14:08
【问题描述】:
我正在使用Autofac。
builder.RegisterType<LogHelper>().As<ILogger>().InstancePerLifetimeScope();
我正在将服务注册为InstancePerLifetimeScope。所以在一个 Lifetime 范围内只创建一个实例。
using (var container = Container.BeginLifetimeScope())
{
var logger = container.Resolve<ILogger>();
var logge1r = container.Resolve<ILogger>();
var logger1 = container.Resolve<ILogger>();
var repobackup = container.Resolve<IRepoBackup>();
repobackup.StartProcess();
}
这两个解析给了我相同的实例。
var logger1 = container.Resolve<ILogger>();
var logger2 = container.Resolve<ILogger>();
某些服务通过依赖注入需要此服务。
var repobackup = container.Resolve<IRepoBackup>();
上面这行初始化了需要 ILogger 实例的 RepoBackupImplemetaion 类,但由于此解析在同一个 LifeTimeScope 中,因此应传递相同的实例,但每次调用具有此依赖关系的构造函数时都会创建新实例。
internal class RepoBackupImplemetaion : IRepoBackup
{
public RepoBackupImplemetaion(ILogger logger)
{
LogHelper = logger;
}
}
我将此服务注册为InstancePerLifetimeScope。
我错过了什么吗?
【问题讨论】:
标签: c# autofac ioc-container