使用Autofac覆盖已注册的接口行为

时间:2018-01-15 11:45:16

标签: c# .net inversion-of-control autofac

我有WebApi项目,该项目引用了我的其他项目DataAccess。

在DataAccess中,我已将IDbSessionManager注册为

builder.RegisterType<DbSessionManager>().As<IDbSessionManager>();

在WebApi项目中,我希望以下一种方式覆盖此注册:

builder.RegisterType<DbSessionManager>().As<IDbSessionManager>().InstancePerRequest();

如果我添加两个注册,则Autofac会抛出异常

  

没有标记匹配的范围&#39; AutofacWebRequest&#39;从请求实例的范围可见。

如果我从WebApi项目中删除注册或以这种方式更改它,就可以解决这个问题:

builder.RegisterType<DbSessionManager>().As<IDbSessionManager>().SingleInstance();

但我需要根据请求解决IDbSessionManager

以前有一个更新容器的解决方案,但现在不推荐使用Update方法。

还有其他办法吗?也许使用像OnlyIf这样的扩展方法?

0 个答案:

没有答案