我有以下课程
public class NightlyJob : IScheduleJob, IRecurringJob
对于这两个接口,我都有这样的简单类型工厂:
public interface IScheduleJobFactory
{
IEnumerable<IScheduleJob> Create();
}
不会从两个工厂的。Create()
方法中检索提到的类。似乎只能从一个工厂检索类,具体取决于首先写入签名中的哪个接口。
我的问题是,是否有解决方法?
答案 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()
);