我有以下接口和对象
public interface IFoo{}
public interface IBar{}
public class Foo : IFoo {
public Foo(IBar bar1, IBar bar2)
{
}
}
public class Bar1 : IBar {}
public class Bar2 : IBar {}
我有以下 Ninject 绑定
Bind<IBar>()
.To<Bar1>()
.InSingletonScope()
.Named("bar1");
Bind<IBar>()
.To<Bar2>()
.InSingletonScope()
.Named("bar2);
Bind<IFoo>()
.To<Foo>()
.InSingletonScope()
.WithConstructorArgument("bar1", context => Kernel.Get<IBar>("bar1"))
.WithConstructorArgument("bar2", context => Kernel.Get<IBar>("bar2"));
现在这可行,但是我真的不喜欢手动将构造函数值指定给“Foo”类。理想情况下,我想要一些能让我这样说的东西:
所有属性名称为 'bar1' 的构造函数属性都应该使用同名的命名实例,如果命名实例不存在,则使用默认实例 'Bar2'
或类似的规定。
所以真的,有没有更好的方法来做我想要实现的目标?