当类使用泛型和泛型类型参数时如何获取正确的 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 对象 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 从 scala 的 Type 获取 ParameterizedType?

    有用的是 scala 的 Universe typeOf 保留了类的类型参数 import scala reflect runtime universe case class X T TypeTag val t typeOf T e g S
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum

随机推荐

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

    如何在添加用户表单上禁用浏览器的保存密码功能 我正在使用 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