当类使用泛型和泛型类型参数时如何获取正确的 MethodInfo 对象

2024-01-04

我想知道是否有人能够演示如何使用 Type 的 GetMethod() 方法来检索以下签名的 MethodInfo 对象:

Class.StaticMethod<T>(T arg1, IInterface1 arg2, IEnumerable<IInterface2> arg3)

Thanks,

Xam


MethodInfo methodInfo = typeof(Class)
                            .GetMethods(
                                BindingFlags.Public | BindingFlags.Static
                            )
                            .Where(m => m.Name == "StaticMethod")
                            .Where(m => m.IsGenericMethod)
                            .Where(m => m.GetGenericArguments().Length == 1)
                            .Where(m => m.GetParameters().Length == 3)
                            .Where(m =>
                                m.GetParameters()[0].ParameterType == 
                                    m.GetGenericArguments()[0] &&
                                m.GetParameters()[1].ParameterType == 
                                    typeof(IInterface1) &&
                                m.GetParameters()[2].ParameterType == 
                                    typeof(IEnumerable<IInterface2>)
                            )
                            .Single();

请注意,您必须遵循此操作

methodInfo = methodInfo.MakeGenericMethod(new Type[] { typeof(ConcreteType) });

关闭类型,其中ConcreteType是您想要的类型参数的类型T.

我假设:

class Class {
    public static void StaticMethod<T>(
        T arg1,
        IInterface1 arg2,
        IEnumerable<IInterface2> arg3
    ) { }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当类使用泛型和泛型类型参数时如何获取正确的 MethodInfo 对象 的相关文章

  • 警告:从指针目标类型中丢弃“const”限定符

    没有const char s意味着 s 是一个指向常量 char 的指针 那么为什么它给我这个警告 我并不是想改变价值观 在第一个函数中警告是return discards const qualifiers from pointer tar
  • 如何使用 C# 打印 pdf

    我在 C 应用程序中使用 进程 打印 pdf 文件 但是我无法获取打印状态 我发现可以通过 System management 和 System printing 与打印机 队列进行交互 我做了很多尝试 但都出错了使用这两个命名空间但无法打
  • ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共构造函数吗?

    在我的两门课程中 看起来像这样 最少 using System using System Collections Generic using System Collections using System ComponentModel us
  • 此插件导致 Outlook 启动缓慢

    我正在使用 C NET 4 5 开发 Outlook Addin 项目 但部署后 有时 Outlook 会禁用我的插件 并显示此消息 这个插件导致 Outlook 启动缓慢 我不知道我的插件出了什么问题 这只有很少的代码 并且ThisAdd
  • 浏览器收集哪些值作为回发数据?

    当页面被发送回服务器时 浏览器收集每个控件的当前值并将其粘贴到一个字符串中 然后 该回发数据通过 HTTP POST 发送回服务器 Q1 除了控件的 Text 属性和 SelectedIndexchanged 因此除了用户输入数据 之外 控
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • TestMethod:异步任务 TestSth() 不适用于 .NET 4.0

    我正在尝试使用 NET 4 0 BCL Async 和 MsTest 运行异步测试方法 看来这个设置不能处理 测试方法 异步Task测试Sth 由于测试用例资源管理器中缺少条目 将签名更改为异步后void 我可以运行测试用例 但结果错误 根
  • 将占位符文本添加到文本框

    我正在寻找一种将占位符文本添加到文本框的方法 就像在 html5 中使用文本框一样 IE 如果文本框没有文本 则会添加文本Enter some text here 当用户单击它时 占位符文本消失并允许用户输入自己的文本 如果文本框失去焦点并
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • 使用 Microsoft Graph 创建用户

    如何使用 Microsoft graph 创建用户 因为我在保存过程中遇到了权限失败的问题 我确实有几个问题 在图中调用创建用户 API 将在哪里创建用户 是在 Azure AD 还是其他地方 我尝试通过传递 json 和必需的标头来调用创
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • AspNetCore.SignalR:无法启动未处于初始状态的连接

    我无法让 ASP NET Core SignalR 应用程序正常运行 我有这个服务器端代码 public class PopcornHub Hub private int Users public async Task BroadcastN
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • C# - 命名空间内的类型声明

    在命名空间内而不是在类中声明类型的可能用途是什么 For ex namespace Test public delegate void Ispossible 这是有效的并且不会产生任何编译错误 但我无法想象为什么我们会以这种方式声明它而不是
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • 检索 Autofac 容器以解析服务

    在 C WindowForms 应用程序中 我启动一个 OWIN WebApp 它创建另一个类 Erp 的单例实例 public partial class Engine Form const string url http 8080 49
  • printf 参数不足

    我的问题是关于缺少参数的 printf 之后的行为 printf s blah blah d int integer was given as argument and not int written 我已经知道 如果格式参数不足 则行为是
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem

随机推荐

  • 如何在添加用户表单上禁用浏览器的保存密码功能

    如何在添加用户表单上禁用浏览器的保存密码功能 我正在使用 autocomplete off 但这对于浏览器中保存的密码不起作用 我对此进行了更多搜索 但到目前为止还没有找到正确的解决方案 任何帮助都是appriced 以下是对此问题的最佳解
  • any 和 any[ ] 和有什么不一样?

    any 和 any 和有什么不一样 示例 1 按预期工作 name1 any name2 any this name1 this name2 示例 2 这也按预期工作 name1 any name2 any this name2 this
  • for-of 循​​环中 `let` 与 `const` 对比什么都没有 [重复]

    这个问题在这里已经有答案了 在 JavaScript 中执行以下三种构造有什么区别 let dd 1 2 3 4 5 for const item of dd console log item for let item of dd cons
  • 哪里可以下载“OpenGL”的源代码? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 哪里可以下载 OpenGL 的源代码 如果您想了解光栅化器 在屏幕上显示多边形的东西 是如何在软件中完成的 请按照 Eric 的建议并查看
  • 如何限制 NSFetchRequest 的结果数?

    我想在我的 iOS 应用程序中添加 最近 20 项 功能 我使用核心数据和NSFetchRequest 如何将结果数量限制为 20 以实现此目的 先感谢您 Kai set the 获取限制 http developer apple com
  • 如何启用主菜单项“复制”?

    我的主菜单项 复制 不可点击 但我在 Xcode 中启用它 我的代码中没有任何主菜单项的出口 我可以做什么 启用菜单项 应用程序菜单和弹出列表编程主题 http developer apple com library Mac documen
  • cluster_edge_ Betweenness 错误

    我正在使用该功能cluster edge betweennessiGraph 中提供 但我遇到错误Modularity is implemented for undirected graphs only g lt read csv samp
  • 如何在JavaFX中仅设置顶部填充[重复]

    这个问题在这里已经有答案了 我只想在 JavaFX 中使用 CSS 指定一个 或多个 填充值 我已阅读此处的文档http docs oracle com javase 8 javafx api javafx scene doc files
  • 加载 Google 网站后自动运行 Google 应用程序脚本?

    我编写了一个 Apps 脚本 它采用电子表格并将其转换为 Google 表单 我想在我的谷歌网站上显示表单 但是 我希望表单在每次打开网站时自动刷新 这样如果电子表格发生更改 表单在显示时也会更新 本质上 我希望脚本在打开 Google 网
  • 如何让github在重命名后遵循目录历史记录?

    一旦目录被重命名 git log 就不再显示其历史记录 除非您使用 git log follow 强制它显示 有没有办法强制 GitHub Web UI 上的 历史记录 功能使用 follow 或者 有吗any如何在 GitHub 上查看预
  • 将.bak文件恢复到远程数据库

    我有一个test bak文件在我的本地机器上 我需要将此文件恢复到远程计算机的数据库 我怎么做 当我尝试此操作时 远程数据库会抛出无法找到的错误test bak在本地文件系统上 Query RESTORE DATABASE TESTPROJ
  • 从嵌套字典列表中获取 pandas 数据框

    我是 Python 新手 所以这可能非常简单 但在寻找一段时间后我还没有找到解决我的问题的好答案 我正在尝试从字典列表创建 Pandas 数据框 我的嵌套字典列表如下 my list 0 a 23 b 15 c 5 d 1 1 a 5 b
  • 如何禁用 DEP

    我们有一个应用程序 其中堆的某些部分作为汇编指令执行 用于测试目的 我们将程序下载到 PLC 但允许用户在下载到 PLC 之前通过执行代码来模拟运行其应用程序 之前我们总是从存储指令的堆中执行这些程序 这工作得很好 但现在我们已经转换到 V
  • vtk中顶点和点的区别

    顶点和点之间的主要区别是什么VTK http www vtk org 好吧 我正在将一些计算点分配给vtkPolyData http www vtk org doc nightly html classvtkPolyData html ou
  • 在 unix 中将行转置为列

    我有下面给出的输入文件 输入文件 10 9 11 61432568509 118 1 20130810014023 46 440 4 GTEL 10 9 11 61432568509 118 1 20130810014023 46 440
  • 在 mac 10.9 中安装 libgd 时出错

    我正在尝试按照此处的说明在我的 mac OSX 10 9 上安装 libgd https mikewest org 2007 04 installing libgd from source on os x https mikewest or
  • IIO(字符)设备输出无输出 - IIO 缓冲区

    我正在为 ADC ADS1243 开发 Linux 驱动程序并使用 IIO 框架 我想添加一个功能来读取 ADC 数据并将其存储到 IIO 缓冲区 我添加了 iio triggered buffer setup 来探测驱动程序的功能 ret
  • 自动 vlookup 并将系数与 R 相乘

    我正在尝试用 R 统计编程语言 编写一个函数 该函数允许我自动计算线性回归 lm 问题 回归是通过 step 函数计算的 因此无法提前知道所选择的系数 问题 自动识别阶跃函数选择的系数 Vlookup 和交叉乘以结果的第二列 例如 View
  • AWS DAX 集群具有零缓存命中和缓存未命中

    我使用的是包含 3 个 dax r4 xlarge 节点类型节点的 AWS DAX 集群 当我从 EMR 集群运行 Spark 应用程序时 它始终从 dynamodb 表中获取值 即使我在同一组密钥上运行相同的应用程序 它也会查询 dyna
  • 当类使用泛型和泛型类型参数时如何获取正确的 MethodInfo 对象

    我想知道是否有人能够演示如何使用 Type 的 GetMethod 方法来检索以下签名的 MethodInfo 对象 Class StaticMethod