Вот как вы можете решить эту проблему, используя DependsOn
и включив выражение nameof
(введено в C # 6.0):
container.Register
(
Component.For<IA>()
.Instance(new A(value1))
.Named("first"),
Component.For<IA>()
.Instance(new A(value2))
.Named("second"),
Component.For<IB>()
.ImplementedBy<B>()
.DependsOn
(
Dependency.OnComponent(nameof(B.First), "first"),
Dependency.OnComponent(nameof(B.Second), "second")
)
)
Dependency.OnComponent
имеет много переопределений, но в этом случае первый параметр - это имя свойства, а второй параметр - имя компонента.
См. здесь для получения дополнительной документации.