Ben bir arabirim var şöyle IService
örneklerinin,:Ninject bağlamaları
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);
}
}
}
Ancak, şuna benzer bir döngüsel bağımlılık gösteren çalışma zamanında bir istisna atma rüzgar benim bağlamaları,:
this.Bind<IService>().To<DispatcherService>();
this.Bind<IService>().To<SomeOtherService>()
.WhenInjectedExactlyInto<DispatcherService>();
this.Bind<IService>().To<YetAnotherService>()
.WhenInjectedExactlyInto<DispatcherService>();
Bu mümkün mü? Eğer öyleyse, ne yapıyorum yanlış? Ninja bu döngüsel bağımlılıktan kaçabilir mi?
Neden 'WhenInjectedExactlyInto', neden sadece' To' gerekiyor: basitçe kısa sizin döngüsel bağımlılığı devre arasında daha açık bir yol bu gibi görünüyor? – casperOne
"WhenInjectedExactlyInto", "SomeOtherService" ve "YetAnotherService" öğelerinin, "DispatcherService" gibi bir şeye enjekte edilmesini önlediğinden. "Sarmak" için benzer bir yaklaşım kullandım (bkz. Http://stackoverflow.com/questions/6752674/dependency-injection-how-to-configure-interface-bindings-for-wrapping) Çok enjeksiyonlu kutu için çalışsın. – FMM
Çeşitli Etkinlik Aracısı uzantılarına baktınız - bunların hepsi örneklerinizi büyük ölçüde yapıyor. Tamam, sadece bir örnek olduğunu söyledin, sessiz olacağım! –