【发布时间】:2010-10-19 08:39:36
【问题描述】:
Castle Windsor 是否支持将 setter 注入应用到现有服务实例?我有一个案例,我无法控制某些类实例的创建,而我确实需要解决它们的依赖关系。这排除了构造函数注入,但为 setter 注入打开了大门,因为我可以在新实例创建后立即拦截它们。
我知道 Castle Windsor 支持开箱即用的 setter 注入,我只是不知道它是否可能(如果是的话:如何)在不使用 Resolve 方法的情况下显式地利用它。
我也知道这样的事情在 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;
}
}
【问题讨论】:
标签: c# .net dependency-injection castle-windsor