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