gpt4 book ai didi

c# - 来自 ControllerContext 的 ActionDescriptor

转载 作者:可可西里 更新时间:2023-11-01 07:57:54 24 4
gpt4 key购买 nike

鉴于我只能访问 ControllerContext 而不能访问 Action____Contexts 获取当前正在执行的 ActionDescriptor 的最佳方法是什么?

到目前为止,我找到的唯一方法是:

new ReflectedControllerDescriptor(context.Controller.GetType())
.FindAction(context, context.RouteData.GetRequiredString("action"));

这是最优方法吗?

这个类被命名为 ReflectedControllerDescriptor 的事实让我想知道这个操作是否有很高的成本,因为它会在每个页面请求上执行?与此相关的是此类是否在内部缓存,或者我实际上应该显式缓存 ReflectedControllerDescriptors 吗?

最佳答案

深入研究 MVC 源代码,这几乎是最佳方式,无需复制执行您已经在做的事情所需的所有方法。但是,我不明白为什么您不能缓存找到的操作以便后续调用性能更高。

在内部 ReflectedControllerDescriptor 也缓存了结果,尽管似乎有一点开销,因为它每次都会检查所有属性。它看起来像 HttpPostAttribute 之类的东西,什么不是。

我的建议是坚持使用您正在使用的内容,而不是自己缓存它。如果由于某种原因,底层方法的工作方式发生变化,您已经是最新的并且不必担心更改存储缓存项的方式。

关于c# - 来自 ControllerContext 的 ActionDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10823562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com