我目前正在从StructureMap迁移到Castle Windsor。
使用StructureMap,您可以在一个中心位置引导框架,然后在代码中的任何位置调用ObjectFactory.GetInstance以使用该配置获取实例。因此,从概念上讲,您可以配置一个容器,并且对ObjectFactory的调用使用该容器。
在我见过的Windsor教程中,容器实例始终是显式创建的,并且通过该容器的实例进行解析。这只是两个框架之间方法的差异吗?
假设情况如此,处理需要与配置分开进行解决的情况的推荐方法是什么?
(理想情况下,可以在配置代码之后进行单个Resolve()调用,并且不存在对容器的其他引用;但是,在某些情况下这是不可能的,例如在使用遗留代码库时。 )
答案 0 :(得分:3)
答案 1 :(得分:1)
我对Windsor不熟悉,但如果它还没有自己的静态外观类,那么创建自己的类是非常简单的。使用包含已配置容器的静态属性创建静态类。添加一个静态方法,用于解析该容器中的实例。这正是ObjectFactory所做的。 StructureMap有一个Container对象,可以完成所有实际工作 - ObjectFactory只是一个方便的包装器。
答案 2 :(得分:0)
如果你真的需要这个,请使用CommonServiceLocator。它具有适用于所有主要IoC容器的适配器。