मैं एक अंतरफलक है IService
के उदाहरण है, तो जैसे:Ninject बाइंडिंग
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);
}
}
}
लेकिन, मेरा बाइंडिंग, कि इस तरह दिखेगा, एक चक्रीय निर्भरता का संकेत कार्यावधि में एक अपवाद फेंक हवा:
this.Bind<IService>().To<DispatcherService>();
this.Bind<IService>().To<SomeOtherService>()
.WhenInjectedExactlyInto<DispatcherService>();
this.Bind<IService>().To<YetAnotherService>()
.WhenInjectedExactlyInto<DispatcherService>();
क्या यह संभव है? यदि हां, तो मैं क्या गलत कर रहा हूँ? क्या निंजा इस चक्रीय निर्भरता विनाश से बच सकता है?
आप की जरूरत क्यों है 'WhenInjectedExactlyInto', क्यों नहीं बस' To': बस कम अपने सर्कुलर निर्भरता सर्किटिंग के अधिक स्पष्ट तरीका यह प्रतीत होता है? – casperOne
क्योंकि 'WhenInjectedExactlyInto'' कुछ अन्य सेवा 'और 'YetAnotherService' को' डिस्पैचर सेवा 'के अलावा किसी भी चीज़ में इंजेक्शन से रोकता है। मैंने "रैप" के लिए एक समान दृष्टिकोण का उपयोग किया है (http://stackoverflow.com/questions/6752674/dependency- इंजेक्शन-how-to-configure-interface- बाइंडिंग-for-wrapping देखें), लेकिन मैं कोशिश कर रहा हूं इसे बहु-इंजेक्शन केस के लिए काम करें। – FMM
क्या आपने विभिन्न इवेंट ब्रोकर एक्सटेंशन को देखा है - वे सभी आपके उदाहरणों को बहुत गहराई से करते हैं। ठीक है, आपने कहा था कि यह सिर्फ एक उदाहरण था, मैं चुप रहूंगा! –