类型无法在多个工厂中解析
Type not resolving in multiple factories
我关注class
public class NightlyJob : IScheduleJob, IRecurringJob
对于这两个接口,我都有像这样的简单类型化工厂:
public interface IScheduleJobFactory
{
IEnumerable<IScheduleJob> Create();
}
未从两个工厂的 .Create()
方法中检索到提到的 class。似乎 class 只能从一个工厂检索,具体取决于签名中的哪个接口先写。
我的问题是是否有办法解决这个问题?
按照史蒂文在评论中建议的方向进行了一些搜索。我发现我的解决方案是直接将 IEnumerable<IScheduleJob>
和 IEnumerable<IRecurringJob>
注入消费者。这些通过使用 Castle 的 CollectionResolver 被解析为实现的集合,如下所示:
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));
container.Register(
Classes.FromAssemblyInDirectory(new AssemblyFilter("."))
.BasedOn(typeof(IScheduleJob)).
WithServiceAllInterfaces()
);
我关注class
public class NightlyJob : IScheduleJob, IRecurringJob
对于这两个接口,我都有像这样的简单类型化工厂:
public interface IScheduleJobFactory
{
IEnumerable<IScheduleJob> Create();
}
未从两个工厂的 .Create()
方法中检索到提到的 class。似乎 class 只能从一个工厂检索,具体取决于签名中的哪个接口先写。
我的问题是是否有办法解决这个问题?
按照史蒂文在评论中建议的方向进行了一些搜索。我发现我的解决方案是直接将 IEnumerable<IScheduleJob>
和 IEnumerable<IRecurringJob>
注入消费者。这些通过使用 Castle 的 CollectionResolver 被解析为实现的集合,如下所示:
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel));
container.Register(
Classes.FromAssemblyInDirectory(new AssemblyFilter("."))
.BasedOn(typeof(IScheduleJob)).
WithServiceAllInterfaces()
);