ich ein Telemetrie-Logger für einige separaten Plattformen entworfen habe das zusammengesetzte Muster mitC#, Schloss Windsor und das Composite-Entwurfsmuster
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());
}
}
Jetzt mag ich in der Lage sein, eine Instanz von „Vielen“ bekommen von Windsor Containern aber haben ein paar Probleme:
wenn alle ILoggers in dem Behälter sind, wie ich sicher, kann ich die „Viele“ Umsetzung und nicht „A“ oder „B“ bekommen?
ich nach diesem Beispiel versucht Castle Windsor: How do I inject all implementations of interface into a ctor? und verwenden
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));
eine Klasse mit IEnumerable dependancy zu registrieren, aber wenn auch, dass Klasse implementiert IComponent pflegt es eine kreisförmige Abhängigkeit schaffen?
Ist was ich versuche, sogar möglich?