Castle Windsor是否支持将setter注入应用于现有服务实例?我有一种情况,我无法控制某些类实例的创建,而我确实需要解析它们的依赖关系。这排除了构造函数的注入,但为setter注入打开了大门,因为我可以在创建新实例后立即拦截新实例。我知道Castle Windsor支持setter注入开箱即用,我只是不知道它是否可能(如果是这样:如何)在没有使用Resolve
方法的情况下明确利用它。Castle Windsor现有服务实例上的Setter注入
我知道在StructureMap中可以使用ObjectFactory.BuildUp
这种方法,这样我就可以在温莎城堡找到相应的东西。
如果你想知道,我正在ASP.NET WebForms的页面中应用依赖注入,提供了一个自定义PageHandlerFactory
。我不想沿着尝试创建页面处理程序的路径走,我应该将其留给PageHandlerFactory
类中的基本实现。
public class CustomPageHandlerFactory : PageHandlerFactory
{
public override IHttpHandler GetHandler(HttpContext context, string requestType, string virtualPath, string path)
{
IHttpHandler handler = base.GetHandler(context, requestType, virtualPath, path);
Page page = handler as Page;
if (page == null)
{
return handler;
}
// Resolve dependencies using setter injection...
return page;
}
}
谢谢。提供的代码实现了注入,而不是将其留给Windsor,并且由于反射代码和没有缓存机制而不是非常高效。尽管如此,我仍将它作为临时解决方案放入我的代码库中,直到我拥有更优雅的解决方案。 – 2010-10-19 12:07:41