Ho progettato un logger telemetria per alcuni piattaforme separate utilizzando il compositeC#, Castello di Windsor e Il design composito modello
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());
}
}
Ora voglio essere in grado di ottenere un 'istanza di "Molti" dal contenitore Windsor ma hanno incontrato alcuni problemi:
se tutti ILoggers sono nel contenitore come posso essere sicuro di ottenere i "molti" implementazione e non "a" o "B"?
Ho provato seguendo questo esempio Castle Windsor: How do I inject all implementations of interface into a ctor? e utilizzare
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));
per registrare una classe con dipendenza IEnumerable ma se tale classe implementa anche IComponent solito si crea una circolare dipendenza?
È quello che sto tentando anche possibile?