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

时间:2012-03-22 14:38:21

标签: c# castle-windsor ioc-container

我稍微修改了应用程序的体系结构,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>

由于

1 个答案:

答案 0 :(得分:0)

正如克里斯在评论中提到的那样,我改变架构的方式确实没有错。

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