在autofac 4.6.2中,ILifetimeService的解析失败

时间:2017-11-07 22:54:21

标签: autofac

我们正在重构旧系统以使用DI。可悲的是,一些"核心"在任何地方使用的组件都有注入不友好的构造函数(例如,描述),因此我们必须使用ServiceLocator来创建它们。目前重构它们是非常不切实际的。

我们通过将ILifetimeScope注入适当的位置来尝试创建不友好的类,但是得到以下异常:

No constructors on type 'Autofac.Core.Registration.ScopeRestrictedRegistry' can be found with the constructor finder 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'.

如果我作弊并使用"更新"在ContainerBuilder上的方法,然后将容器注册为LifetimeScope,解决方案成功运行,但是,鉴于Update已经过时,它不是我想做的事情。

有人可以帮忙吗?

编辑:我没有做任何特别的事情。建立是标准的:

builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();

this.Container = builder.Build();
builder = new ContainerBuilder();
builder.RegisterInstance(this.Container);
builder.RegisterInstance(this.Container).As<ILifetimeScope>();
builder.Update(this.Container);

没有这些行

builder = new ContainerBuilder();
builder.RegisterInstance(this.Container);
builder.RegisterInstance(this.Container).As<ILifetimeScope>();
builder.Update(this.Container);

任何具有ILifetimeScope依赖关系的类都会因上述错误而失败。

public class MyClass : IMyClass
{
    public MyClass(ILifetimeScope scope)
    {
        ...
    }
}

我实际上认为这是Autofac框架中的一个错误,所以我希望团队中的某个人能够告诉我更多。

ILifetimeScope应该自动可用。

0 个答案:

没有答案