J'ai conçu un enregistreur de télémétrie pour quelques plates-formes distinctes en utilisant le motif compositeC#, le château de Windsor et le modèle de conception composite
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());
}
}
Maintenant, je veux être en mesure d'obtenir une instance de « beaucoup » du contenant Windsor mais ont rencontré quelques problèmes:
si tous ILoggers sont dans le conteneur comment puis-je assurer que je reçois le « Beaucoup » la mise en œuvre et non « A » ou « B »?
J'ai essayé suivre cet exemple Castle Windsor: How do I inject all implementations of interface into a ctor? et utiliser
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));
pour enregistrer une classe avec IEnumerable mais si dépendance que la classe implémente également IComponent habitude il créer une dépendance circulaire?
Est ce que j'essaye même possible?