键入不在多个工厂中解析

时间:2016-12-15 13:19:37

标签: c# castle-windsor factory ioc-container

我有以下课程

public class NightlyJob : IScheduleJob, IRecurringJob

对于这两个接口,我都有这样的简单类型工厂:

public interface IScheduleJobFactory
{
    IEnumerable<IScheduleJob> Create();
}

不会从两个工厂的。Create()方法中检索提到的类。似乎只能从一个工厂检索类,具体取决于首先写入签名中的哪个接口。

我的问题是,是否有解决方法?

1 个答案:

答案 0 :(得分:0)

在史蒂文在评论中提出的方向搜索之后。我发现我的解决方案是直接向消费​​者注入IEnumerable<IScheduleJob>IEnumerable<IRecurringJob>。通过使用Castle的 CollectionResolver ,将这些解析为实现集合:

container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));
        container.Register(
            Classes.FromAssemblyInDirectory(new AssemblyFilter("."))
                .BasedOn(typeof(IScheduleJob)).
                WithServiceAllInterfaces()
        );