如果我只能访问ControllerContext
而不能访问Action____Contexts
,那么获取当前正在执行的ActionDescriptor的最佳方法是什么?
到目前为止,我找到的唯一方法是:
new ReflectedControllerDescriptor(context.Controller.GetType())
.FindAction(context, context.RouteData.GetRequiredString("action"));
这是最佳方法吗?
类名为ReflectedControllerDescriptor
的事实使我想知道执行此操作是否有很大的代价,因为它将在每个页面请求上执行?相关的是,此类是否在内部缓存,还是我应该显式地缓存ReflectedControllerDescriptors
?
ReflectedControllerDescriptor
内部的反射使用确实被缓存了,但可以说我也可以缓存对FindAction
的调用吗? - Chris Marisic