पर निंजा संपत्ति इंजेक्शन ninject
का उपयोग करके मैं संपत्ति को इंजेक्ट करने का प्रयास कर रहा हूं। ninject
मॉड्यूल में दो बाइंडिंग को देखते हुए, मैं ConcreteDependency
को B
में इंजेक्शन देने की अपेक्षा करता हूं।
हालांकि, ऐसा लगता है कि WhenInjectedInto
इस प्रकार के लक्ष्य को घोषित करने के प्रकार को अस्वीकार नहीं करता है (इस मामले में संपत्ति)।बेस क्लास
क्या मुझे अपेक्षित व्यवहार प्राप्त करने का कोई तरीका है?
static void Main(string[] args)
{
var kernel = new StandardKernel(new TestModule());
var b = kernel.Get<B>();
var c = kernel.Get<C>();
}
class TestModule : NinjectModule
{
public override void Load()
{
Bind<IDependency>().To<EmptyDependency>();
Bind<IDependency>().To<ConcreteDependency>().WhenInjectedInto<B>();
}
}
abstract class A
{
[Inject]
public IDependency Dependency { get; set; }
}
class B : A {}
class C : A {}
interface IDependency {}
class EmptyDependency : IDependency { }
class ConcreteDependency : IDependency { }
आप ए इंजेक्ट में ए, बी और सी कैसे पंजीकृत करते हैं? –
आपको निनजेक्ट में नहीं होना है। चूंकि 'बी' और' सी 'ठोस वर्ग हैं इसलिए उन्हें स्पष्ट रूप से पंजीकृत होने की आवश्यकता नहीं है। – Gibsnag