我有这个:
interface IValidator
{
bool InputOK(Text);
}
class ValidatorChain : IValidator
{
ValidatorChain(IEnumerable<IValidator> other_validators_in_order) {...}
bool InputOK(Text) { return other_validators_in_order.All(v=>v.InputOK(Text)); }
}
ConcreteValidator1 : IValidator {...}
ConcreteValidator2 : IValidator {...}
ConcreteValidator3 : IValidator {...}
我想用ninject绑定它,很简单;
Bind<IValidator>.To<ConcreteValidator1>();
Bind<IValidator>.To<ConcreteValidator2>();
Bind<IValidator>.To<ConcreteValidator3>();
现在,问题是我想在其他地方使用链,然后将链注入那里。如果我尝试
Bind<IValidator>.To<ConcreteValidator1>().WhenInjectedExactlyInto(typeof(ValidatorChain));
Bind<IValidator>.To<ConcreteValidator2>().WhenInjectedExactlyInto(typeof(ValidatorChain));
Bind<IValidator>.To<ConcreteValidator3>().WhenInjectedExactlyInto(typeof(ValidatorChain));
Bind<IValidator>.To<ValidatorChain>();
一开始它似乎有效,但由于最后一行,我得到了循环依赖。我在最后一次绑定上做了一些尝试,When
但没有让它工作。
我该如何解决这个问题?
编辑:另外,我应该补充一点,我不想向类添加任何属性。