Autofac,覆盖范围内的所有注册

时间:2017-08-21 09:10:23

标签: c# dependency-injection scope autofac

我有一个使用T的倍数实例构建的容器。 我像这样解决它们:

using(var scope = container.BeginLifeTimeScope())
{
    var allMyTs = scope.Resolve<IEnumerable<T>>();
}

效果很好。 但是在特定范围内,在某些情况下,我希望能够使用特定实例覆盖所有T。我已经知道有一个覆盖BeginLifeTimeScope,可以为此特定注册设置Action<ContainerBuilder>

所以我试过

var specificT = new T();
using(var scope = container.BeginLifeTimeScope(a => {
    a.RegisterInstance(T).AsSelf().AsImplementedInterfaces();
    a.RegisterInstance(new List<T>{ specificT }).As<IEnumerable<T>>();
}))
{
    var allMyTs = scope.Resolve<IEnumerable<T>>();
}

在这种情况下,我希望allMyTs只包含specificT,但它不是,我得到了所有注册的T和特定的T. 有人有想法或曾经实现过这个吗?

0 个答案:

没有答案