2012-03-22 24 views
1

我稍微改變了我們應用程序的體系結構,而IWindsorContainer不再能夠ResolveAll。Castle Windsor無法ResolveAll當接口位於2抽象基類後面

這是老架構,沒有工作:

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> 

感謝

+0

如何註冊'TrainFileService'? – 2012-03-22 14:41:22

+0

最後一段代碼用於註冊TrainFileService(IService [] _services = Program.IocContainer.ResolveAll ();)。這工作使用舊的方式,但不是新的方式。 – 2012-03-22 14:48:16

+0

你如何解決它(讓它*容器*)*。不是你如何註冊它(把它*放入容器中)。 – 2012-03-22 14:48:58

回答

0

正如在評論中提到由克里斯,實際上是沒有錯的,我有辦法改變了架構。

問題在別處。也就是說,我沒有在構造函數上註冊布爾值...