【问题标题】:Castle Windsor not able to ResolveAll when interface is behind 2 abstract base classes当接口位于 2 个抽象基类之后时,Castle Windsor 无法 ResolveAll
【发布时间】:2012-03-22 14:38:21
【问题描述】:

我稍微改变了我们应用程序的架构,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>

谢谢

【问题讨论】:

  • 如何注册TrainFileService
  • 最后一段代码用于注册TrainFileService (IService[] _services = Program.IocContainer.ResolveAll();)。这使用旧方法有效,但不是新方法。
  • 你如何解决它(将它从容器中取出)。不是你如何注册它(把它放入容器中)。
  • 请查看已编辑的问题 - 谢谢。
  • 您发布的代码中没有任何问题。你确定你没有改变任何东西吗?可能是命名空间?

标签: c# castle-windsor ioc-container


【解决方案1】:

正如 Chris 在 cmets 中提到的那样,我更改架构的方式实际上并没有错。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多