【发布时间】: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