मैं समग्र पैटर्नसी #, महल विंडसर और समग्र डिजाइन पैटर्न
public interface ILogger
{
void Log();
}
public class A : ILogger
{
public void Log(...);
}
public class B : ILogger
{
public void Log(...);
}
public class Many : ILogger
{
private readonly List<ILogger> m_loggers;
public Many(IEnumerable<ILogger> loggers)
{
m_loggers = loggers.ToList();
}
public void Log()
{
m_loggers.ForEach(c => c.Log());
}
}
का उपयोग कर कुछ अलग प्लेटफार्मों के लिए एक टेलीमेटरी लकड़हारा तैयार की है अब मैं विंडसर कंटेनर से "कई" का एक उदाहरण प्राप्त करने में सक्षम होना चाहता हूँ लेकिन कुछ समस्याओं का सामना करना पड़ा:
अगर सब ILoggers मैं कैसे यकीन है कि मैं "कई" कार्यान्वयन और नहीं 'ए' या 'बी' प्राप्त कर सकते हैं कंटेनर में कर रहे हैं?
मैं इस उदाहरण का अनुसरण करने की कोशिश की Castle Windsor: How do I inject all implementations of interface into a ctor? और
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));
IEnumerable dependancy के साथ एक वर्ग रजिस्टर करने के लिए, लेकिन अगर कि वर्ग भी IComponent लागू करता है अभ्यस्त यह एक परिपत्र निर्भरता बनाने का उपयोग करें?
क्या मैं भी संभव प्रयास कर रहा हूं?