2012-03-22 54 views
1

我有抽象BaseController,基本上看起来象下面这样:MVC实际控制人VS filterContext.Controller

public abstract class BaseController : Controller 
{ 
    public IDisposable Resource { get; protected set; }  

    protected override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     if(Resource != null) 
     { 
      Resource.Dispose(); 
     } 

     var baseController = filterContext.Controller as BaseController; 
     if (baseController != null && baseController.Resource != null) 
     { 
      baseController.Resource.Dispose(); 
     } 
    } 
} 

里面OnActionExecuted事件,我想处理资源对象。在资源上执行Dispose是否足够?我是否还需要从filterContext中检查控制器中的资源?

在我的情况下,调试器,这是同一个对象,但是它始终是相同的吗?它是干什么用的 ?

回答

1

这是同一个对象。该Controller属性可以在操作筛选有用的 - 他们也得到了ActionExecutedContextOnActionExecuted - 你在控制器那里不是。