gpt4 book ai didi

asp.net-mvc - 如何通过传递 ControllerName 获取 MVC Controller 的所有操作列表?

转载 作者:行者123 更新时间:2023-12-03 23:26:38 25 4
gpt4 key购买 nike

如何获取Controller的所有操作列表?我搜索但找不到示例/答案。我看到一些推荐使用反射的例子,但我不知道如何。

这是我想要做的:

public List<string> ActionNames(string controllerName){




}

最佳答案

你还没有告诉我们你为什么需要这个,但一种可能性是使用反射:

public List<string> ActionNames(string controllerName)
{
var types =
from a in AppDomain.CurrentDomain.GetAssemblies()
from t in a.GetTypes()
where typeof(IController).IsAssignableFrom(t) &&
string.Equals(controllerName + "Controller", t.Name, StringComparison.OrdinalIgnoreCase)
select t;

var controllerType = types.FirstOrDefault();

if (controllerType == null)
{
return Enumerable.Empty<string>().ToList();
}
return new ReflectedControllerDescriptor(controllerType)
.GetCanonicalActions().Select(x => x.ActionName)
.ToList();
}

很明显,我们知道反射不是很快,所以如果你打算经常调用这个方法,你可以考虑通过缓存 Controller 列表来改进它,以避免每次获取它甚至 memoizing给定输入参数的方法。

关于asp.net-mvc - 如何通过传递 ControllerName 获取 MVC Controller 的所有操作列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300327/

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