假设我们有由 Foo 实现的 IFoo,以及由 FirstBar 和 SecondBar 实现的 IBar。
使用此约定注册:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface())
我们将在容器中包含三个条目:
IFoo = Foo
IBar = FirstBar
IBar = SecondBar
现在,我们如何调整此注册,以便能够告诉容器,对于 IBar,我们只希望注册 SecondBar?有点:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface()
.For<IBar>().Select<SecondBar>())
用例:我们的应用程序中有很多服务都是按约定注册的。然而,一些服务接口有两个或多个实现(例如真实实现、假实现和测试实现)。约定注册将把它们全部注册在同一个接口下,在解析接口时,我们将获得第一个实现(以不确定的顺序)。我们希望能够在注册时为这些服务选择一种特定的实现。我们怎样才能做到这一点?
加强你的约定。显然是太宽了。
container.Register(
AllTypes.FromThisAssembly()
.Where(t => t.Namespace != "Acme.Tests")
.WithService.DefaultInterface())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)