gpt4 book ai didi

c# - 在 C# 中获取所有 Controller 和操作名称

转载 作者:IT王子 更新时间:2023-10-29 03:47:08 24 4
gpt4 key购买 nike

是否可以以编程方式列出所有 Controller 的名称及其操作?

我想为每个 Controller 和操作实现数据库驱动的安全性。作为开发人员,我知道所有的 Controller 和 Action ,并且可以将它们添加到数据库表中,但是有什么方法可以自动添加它们吗?

最佳答案

以下将提取 Controller 、操作、属性和返回类型:

Assembly asm = Assembly.GetAssembly(typeof(MyWebDll.MvcApplication));

var controlleractionlist = asm.GetTypes()
.Where(type=> typeof(System.Web.Mvc.Controller).IsAssignableFrom(type))
.SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
.Where(m => !m.GetCustomAttributes(typeof( System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any())
.Select(x => new {Controller = x.DeclaringType.Name, Action = x.Name, ReturnType = x.ReturnType.Name, Attributes = String.Join(",", x.GetCustomAttributes().Select(a => a.GetType().Name.Replace("Attribute",""))) })
.OrderBy(x=>x.Controller).ThenBy(x => x.Action).ToList();

例如,如果您在 linqpad 中运行此代码并调用

controlleractionlist.Dump();

你得到以下输出:

enter image description here

关于c# - 在 C# 中获取所有 Controller 和操作名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583278/

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