我最終做的是擴展ControllerActionInvoker並解決那裏的任何屬性依賴關係,特別是針對異常過濾器。
代碼:
public class WindsorActionInvoker : ControllerActionInvoker
{
private readonly IKernel _kernel;
public WindsorActionInvoker(IKernel kernel)
{
_kernel = kernel;
}
protected override ExceptionContext InvokeExceptionFilters(ControllerContext controllerContext, IList<IExceptionFilter> filters, System.Exception exception)
{
foreach (var actionFilter in filters.Where(actionFilter => !(actionFilter.GetType() == controllerContext.Controller.GetType())))
{
_kernel.InjectProperties(actionFilter);
}
return base.InvokeExceptionFilters(controllerContext, filters, exception);
}
你能澄清你所說的「一般我解決這些各種各樣的依賴在ControllerActionInvoker的延伸」是什麼意思?你在說「InvokeActionMethodWithFilters」嗎? – PatrickSteele 2012-08-17 13:07:18
如果你看看我包含的鏈接上的答案,他有一個名爲WindsorActionInvoker的類。我基本上完全一樣。 – shenku 2012-08-19 08:29:07