我有一个使用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. 有人有想法或曾经实现过这个吗?