当接口位于2个抽象基类后面时,Castle Windsor无法ResolveAll

本文关键字:Castle Windsor ResolveAll 无法 接口 2个 基类 抽象 | 更新日期: 2023-09-27 18:28:52

我稍微改变了应用程序的架构,IWindsorContainer不再能够ResolveAll。

这是一个行之有效的旧架构:

public abstract class ServiceBase : IService {}
public class TrainFileService : ServiceBase {}

这是ResolveAll没有解析FileProcessorScheduledService的新架构:

public abstract class ServiceBase : IService {}
public abstract class FileServiceBase : ServiceBase {}
public class TrainFileService : FileServiceBase {}

所以,我介绍了另一个抽象类。。。。

用于ResolveAll的旧方法和新方法的代码是:

IService[] _services = Program.IocContainer.ResolveAll<IService>();

用于为新旧方式注册TrainFileService的代码是:

<castle>
 <components>
  <component id="TrainFileService"
           lifestyle="singleton"
           service="Blah.Service.Services.IService, Blah.Service"
           type="Blah.Service.Services.TrainFileService , Blah.Service">
  </component>

感谢

当接口位于2个抽象基类后面时,Castle Windsor无法ResolveAll

正如Chris在评论中提到的,我更改体系结构的方式实际上没有错。

问题出在其他地方。也就是说,我没有在构造函数上注册布尔值。。。