在 C# 中获取所有控制器和操作名称

2023-11-21

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

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


下面将提取控制器、操作、属性和返回类型:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中获取所有控制器和操作名称 的相关文章

  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何在单击按钮时重新绑定 igGrid igniteUI 控件中的数据?

    我在 ASP NET MVC3 应用程序中使用 Infragistics Ignite UI 控件 我有一个已绑定到 客户 数据的网格 工作正常 现在我有按钮了 单击后我会进行 ajax 调用 在控制器中 我编写了仅选择 客户 数据的一部分
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • netcat 的新行问题 [已关闭]

    Closed 这个问题是无关 目前不接受答案 我正在使用下面的命令将一些字符串发送到 udp 侦听服务器 回声 A 192 168 192 168 数控 u 192 168 2 1 1234 但服务器在回显字符串中出现尾随 n 我也尝试过下
  • 无法安装适用于 AMD 处理器的 Android 仿真器管理程序驱动程序

    我无法安装适用于 AMD 处理器的 Android 仿真器管理程序驱动程序 需要注意的是 虚拟化是启用的 Emulator Process for AVD was killed运行代码时显示Visual Studio尝试在 Android
  • 睡眠直到特定时间/日期

    我希望我的 bash 脚本休眠到特定时间 所以 我想要一个像 sleep 这样的命令 它不需要间隔 但有一个结束时间 并一直睡眠到那时 at 守护进程不是解决方案 因为我需要阻止正在运行的脚本直到某个日期 时间 有这样的命令吗 正如 Out
  • 如何使用 has_many :through 和 Honor :conditions 创建新记录?

    假设我有一门课程 学生可以通过会员身份注册 例如课程和学生的 has and belongs to many 关系 有些会员资格是针对只是旁听课程的学生 不是为了学分等 因此 class Course lt ActiveRecord Bas
  • 如何在 Angular 5 的纯管道中使用 HTTP 调用

    我正在创建一个管道来将一种货币价值转换为另一种货币价值 我正在进行 HTTP 调用来转换值 Pipe name currencyConverter export class CurrencyConverterPipe implements
  • 测试场景和测试用例有什么区别?

    我对测试场景和测试用例有点困惑 它们之间有什么区别 假设我必须测试一盒火柴 我说的对吗 以下是测试场景的示例 盒子里能装 x 根火柴吗 假设盒子是关闭的 我用力摇晃它 火柴还在盒子里吗 您能给我测试场景和测试用例的示例吗 Example 您
  • MySQL的不同引号

    我对 MySQL 有点陌生 只是想知道它们之间有什么区别 当我在查询中使用它们时 用 你可以写 mysql 变量名 用 你写mysql变量值 例如 SELECT FROM test WHERE x 1
  • 如何使用 Inno Setup 安装 Windows 服务?

    我编写了一个批处理脚本 在使用 Inno Setup 进行安装后执行 问题是我有以下命令行用于创建服务 sc create MySQL start auto DisplayName MySQL binPath C MyApp MySQL 5
  • 检查 Cypress 中的单选按钮

    我对 Javascript 非常陌生 这是我使用 Cypress 的第二周 所以我需要帮助来单击单选按钮 我总是从赛普拉斯那里收到错误 我试图检查的元素如下所示
  • 错误代码:1406。列数据太长 - MySQL

    错误代码 1406 数据对于列来说太长 CREATE TABLE TEST idTEST INT NOT NULL TESTcol VARCHAR 45 NULL PRIMARY KEY idTEST Now Insert一些价值观 INS
  • 在 django 中格式化未修饰的电话号码?

    我有一个数据库 其中包含完整的电话号码作为字符串 它们的格式都类似于 1112223333 我想在我的 django 模板中将其显示为 111 222 3333 我知道我能做到 n contacts objects get name nam
  • 针对 Web 格式化 Python 代码

    直到最近 我使用如下内容将 Python 代码 空格很重要 发布到 blogspot com div table border 0 width 100 tbody tr td pre style font family monaco my
  • 如何将字符串数据发送到 UIButton 标签?

    有什么方法可以将字符串值发送到UIButton标签 我知道tag is Int输入但我需要发送string value let myButton UIButton let button UIButton button tag 123 ret
  • 当拥有身份列不是一个好主意时?

    在仅需要 1 列作为键以及该列中的值的表中can是整数 当你不应该使用标识字段时 相反 在同一个表和列中 您什么时候会手动生成其值并且不会为每个记录使用自动生成的值 我猜想当表中有大量插入和删除时就会出现这种情况 我对吗 还有哪些其他情况
  • 如何使用Python进行简单的http重定向?

    如何使用Python进行简单的http重定向 不使用元 UPDATE I am using Python 2 7 1 as a CGI from within the cgi bin directory of Apache 要使用当前设置
  • 将 php post 数据传递给 javascript 的方法

    所以我想知道 如果我有一个简单的 php 表单将信息发布到某个变量 我如何将该发布的变量传递给 javascript 并能够操作数据 我想出的唯一方法是使用内联javascript和php 但我觉得必须有一种更干净 更优雅的方法来做到这一点
  • 如何在 Android O 中动态更改通知声音

    最近我使用通知通道来支持android O 但问题是我无法动态更改声音 Uri 我们的应用程序有通知声音设置 用户可以根据需要更改应用程序通知声音 但如您所知 Android 现在不允许开发者在用户重新安装应用程序之前更新通知渠道 我在那里
  • JDBC:将日期值插入 MySQL

    我想知道如何使用 Java JDBC 将日期值设置到 MySQL 数据库 以下是我的代码 String lastCrawlDate 2014 01 28 PreparedStatement p con prepareStatement in
  • node.js 将变量暴露给模块?

    我读过很多关于如何在 Node js 中创建模块的文章 您可以使用 module exports 将模块内部公开到包含它的文件中 太棒了 反过来又是如何运作的呢 我将使用以下示例 USER JS function User this pro
  • 在 C# 中获取所有控制器和操作名称

    是否可以以编程方式列出所有控制器的名称及其操作 我想为每个控制器和操作实现数据库驱动的安全性 作为一名开发人员 我知道所有控制器和操作 并且可以将它们添加到数据库表中 但是有什么方法可以自动添加它们吗 下面将提取控制器 操作 属性和返回类型