निम्नलिखित इंटरफेस को देखते हुए के सभी पंजीकृत क्रियान्वयन युक्त एक Enumerable इंजेक्शन:एक अंतरफलक
public interface IMyProcessor
{
void Process();
}
मैं कई कार्यान्वयन रजिस्टर और मेरी डि कंटेनर की तरह एक वर्ग में उनमें से एक गणनीय इंजेक्षन करने में सक्षम होना चाहते हैं यह:
public class MyProcessorLibrary
{
private readonly IMyProcessor[] _processors;
public MyProcessingThing(IMyProcessor[] processors)
{
this._processors = processors;
}
public void ProcessAll()
{
foreach (var processor in this._processors)
{
processor.Process();
}
}
}
क्या यह संभव है? MyProcessorLibrary
का मेरा वर्तमान कार्यान्वयन स्थिर रूप से सभी IMyProcessor
कार्यान्वयन को देखता है, लेकिन अगर मैं कर सकता हूं तो मैं इसे कंटेनर के माध्यम से करूँगा। मैं एकता का उपयोग कर रहा हूं, लेकिन अगर अन्य कंटेनर इसका समर्थन करते हैं तो उत्सुक हूं।
संपादित करें:
जवाब अब तक के लिए धन्यवाद; स्पष्ट होने के लिए मैं MyProcessorLibrary
को किसी अन्य वर्ग में इंजेक्ट करना चाहता हूं, और इसे आश्रित वस्तुओं के पेड़ के तारों के तार के रूप में बनाया गया है, उदाहरण के लिए
public class MyProcessorRepository
{
public MyProcessorRepository(MyProcessorLibrary processorLibrary)
{
}
}
public class MyProcessorService
{
public MyProcessorService(MyProcessorRepository processorRepository)
{
}
}
var container = new UnityContainer();
// Register a bunch of IMyProcessors...
var service = container.Resolve<MyProcessorService>();
संभव डुप्लिकेट: // stackoverflow.com/questions/1961549/resolving-ienumerablet-with-unity) –