Castle Windsor是否支持将setter注入应用于现有服务实例?我有一个案例,我无法控制某些类实例的创建,而我需要解决它们的依赖关系。这排除了构造函数注入,但是因为我可以在创建它们之后立即拦截新实例,因此可以打开安装程序注入的大门。
我知道Castle Windsor支持setter注入开箱即用,我只是不知道它是否可能(如果是这样的话)如何在不使用Resolve
方法的情况下明确地利用它。
我也知道在StructureMap中可以使用ObjectFactory.BuildUp
方法进行这样的事情,这样我就可以在Castle Windsor找到一个等价物了。
如果您想知道,我正在将依赖注入应用于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;
}
}
答案 0 :(得分:1)
请参阅本文的底部:
http://www.jeremyskinner.co.uk/2008/11/08/dependency-injection-with-aspnet-mvc-action-filters/
Jeremy为Windsor Container提供了一种实现属性注入的扩展方法。
答案 1 :(得分:1)
Castle Windsor是否支持将setter注入应用于现有服务实例?
没有。查看FAQ了解原理。
我正在将依赖注入应用于ASP.NET WebForms中的页面,
请参阅this question。
答案 2 :(得分:1)
查看Neal Shawn的ASpNetWindsorModule。