que tienen una interfaz:fijaciones ninject para una implementación despachador de una interfaz
public interface IService
{
void DoStuff(int parm1, string parm2, Guid gimmeABreakItsAnExampleK);
}
me gustaría configurar Ninject (v3) fijaciones para que pueda tener un método shuffle "despachador" llama a múltiples casos de IService
, así:
public sealed class DispatcherService : IService
{
private IEnumerable<IService> _children;
public DispatcherService(IEnumerable<IService> children)
{
this._children = children.ToList();
}
public void DoStuff(int parm1, string parm2, Guid gimmeABreakItsAnExampleK)
{
foreach(var child in this._children)
{
child.DoStuff(parm1, parm2, gimmeABreakItsAnExampleK);
}
}
}
Sin embargo, mis ataduras, que se parecen a esto, terminan lanzar una excepción en tiempo de ejecución que indica una dependencia cíclica:
this.Bind<IService>().To<DispatcherService>();
this.Bind<IService>().To<SomeOtherService>()
.WhenInjectedExactlyInto<DispatcherService>();
this.Bind<IService>().To<YetAnotherService>()
.WhenInjectedExactlyInto<DispatcherService>();
¿Esto es posible? Si es así, ¿qué estoy haciendo mal? ¿Pueden los ninja escapar de esta condena a la dependencia cíclica?
¿Por qué necesita 'WhenInjectedExactlyInto', ¿por qué no' To'? – casperOne
Porque 'WhenInjectedExactlyInto' impide que 'SomeOtherService' y' YetAnotherService' se inyecten en cualquier cosa que no sea 'DispatcherService'. He utilizado un enfoque similar para "ajustar" (ver http://stackoverflow.com/questions/6752674/dependency-injection-how-to-configure-interface-bindings-for-wrapping), pero estoy tratando de hacer que funcione para el caso de inyección múltiple. – FMM
¿Ha mirado las diversas extensiones de Event Broker? Todas hacen lo que sus ejemplos hacen en gran profundidad. OK, dijiste que era solo un ejemplo, ¡estaré callado! –