【发布时间】:2015-10-13 04:59:54
【问题描述】:
我使用复合模式为几个单独的平台设计了遥测记录器
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());
}
}
现在我希望能够从 Windsor 容器中获取“Many”的实例 但是遇到了一些问题:
如果所有 ILogger 都在容器中,我如何确保获得“Many”实现而不是“A”或“B”?
我试着按照这个例子 Castle Windsor: How do I inject all implementations of interface into a ctor? 并使用
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));注册一个具有 IEnumerable 依赖的类,但如果 该类还实现了 IComponent 不会创建循环 依赖?
我正在尝试的可能吗?
【问题讨论】:
标签: c# design-patterns castle-windsor composite