查明某个类型是否实现了通用接口

2024-01-22

假设我有一个类型,MyType。我想做以下事情:

  1. 查明对于某些 T,MyType 是否实现了 IList 接口。
  2. 如果 (1) 的答案是肯定的,请找出 T 是什么。

似乎执行此操作的方法是 GetInterface(),但它只能让您按特定名称进行搜索。有没有一种方法可以搜索“所有 IList 形式的接口”(如果可能的话,如果该接口是 IList 的子接口,它也能工作,那么它也会很有用。)

有关的:如何确定类型是否实现特定的泛型接口类型 https://stackoverflow.com/questions/503263/how-to-determine-if-a-type-implements-a-specific-generic-interface-type


// this conditional is necessary if myType can be an interface,
// because an interface doesn't implement itself: for example,
// typeof (IList<int>).GetInterfaces () does not contain IList<int>!
if (myType.IsInterface && myType.IsGenericType && 
    myType.GetGenericTypeDefinition () == typeof (IList<>))
    return myType.GetGenericArguments ()[0] ;

foreach (var i in myType.GetInterfaces ())
    if (i.IsGenericType && i.GetGenericTypeDefinition () == typeof (IList<>))
        return i.GetGenericArguments ()[0] ;

Edit:即使myType实施IDerivedFromList<>但不是直接IList<>, IList<>将显示在返回的数组中GetInterfaces().

Update:添加了对边缘情况的检查,其中myType是有问题的通用接口。

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

查明某个类型是否实现了通用接口 的相关文章

  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 如何从“活动”返回主屏幕

    我知道当我按 Home 键时 Android 会返回主屏幕 但是 我希望我的 imageButton 充当主屏幕键 它可以将主屏幕通知到前台 我应该如何实现 onClickListener 来完成此任务 Intent intent new
  • 安装 APK 会导致解析错误

    我创建了一个app debug apk文件输入 sdcard Download 我有这个代码 Override public void onClick View v Intent intent new Intent Intent ACTIO
  • Javascript-通过函数和函数参数设置 DIV 的背景图像

    我有以下 HTML div style background image url buttons off png img src buttons text png div 以及以下 JavaScript function ChangeBac
  • 有可用的 WPF 备忘单吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 WPF 备忘单 其中包含用于绑定 资源和 WPF 中其他常见内容的 WPF 标记扩展 但到目前为止我还很难找到它 有人知道
  • Python 3:类型错误:下标泛型不能与类和实例检查一起使用

    如何测试 Python 2 和 Python 3 中的子类型 在 Python 2 7 18 中 gt gt gt import typing gt gt gt type typing List str gt gt gt issubclas
  • 实时数据绑定

    All 我目前有一个端到端工作的 POC WPF 项目 该应用程序模拟通过库 发布者 发布的实时市场数据 我的 WPF 客户端是订阅者 具有处理程序方法 它使用自定义事件来发布数据 我的问题是这样的 1 我想实现 Producer Cons
  • Spring Batch - 当 ItemReader 没有返回数据时如何使作业失败

    我有一个 Spring Batch 应用程序 它使用 JdbcCursorItemReader 从数据库表中读取数据 并使用 FlatFileItemWriter 将其写入平面文件 当我测试我的应用程序时 我发现即使没有通过 JdbcCur
  • 无法将类型“NSMutableArray”的值转换为预期参数类型“[SKAction]”

    我检查了我的旧游戏 用 SpriteKit 制作 我想在 Swift 2 0 中更新它 当我尝试修复它时 Xcode 发现了一个错误 错误是 无法将类型 NSMutableArray 的值转换为预期参数类型 SKAction 在代码中 to
  • 如何在 MongoKit 中关闭光标

    我正在使用 MongoKit 对大量数据执行迭代 在此过程中 我的光标变得无效 并且我得到 OperationFailure cursor id 369397057360964334 not valid at server 我在邮件列表中读
  • java.sql.sqlnontransientconnectionException:java.net.connectException:连接到端口上的服务器本地主机时出错

    我一直在使用 Derbyclient 本地托管的数据库 开发一个 java 项目 我已经完成了所有事情 除了当我尝试桌面应用程序而没有手动连接到数据库 来自 Netbeans 时 标题中的错误弹出 我似乎无法解决它 感谢您花时间阅读本文并为
  • 同时运行多个await

    我有一个看起来像这样的代码 firstList await GetFirstListFilesAsync textBlock1 Text found firstList Count first list s results secondLi
  • 通过 XML 使用 python suds 进行 WebService 请求

    我正在尝试使用 python 与网络服务器进行通信 我正在使用肥皂水库 事实上我对此很陌生 通常 要与此 Web 服务器通信 请发送一条 xml 消息 然后我会收到响应 这就是我想用 python 做的事情 这是我写的代码 from sud
  • Microsoft SQL Server 分页

    stackoverflow上有很多sql server分页问题 其中很多都谈到使用ROW NUMBER OVER ORDER BY AND CTE 一旦您进入数十万行并开始添加对非主键值的排序并添加自定义 WHERE 子句 这些方法就会变得
  • GWT 中大型数值数组的高效表示

    我有一个时间序列类 在一天内将保存 100K 200K 值 基本上是市场报价 统一采样 在java方面 性能最好的表示是使用double 而不是List 我怀疑这种方法是否能很好地映射到 javasctipt 中 在Java方面 doubl
  • jsp表达式标签<%和<%=的区别

    我或多或少知道 的表达式中引入一些逻辑来避免空值错误 除非我用 替换标签 否则我会收到错误 然而 在构建之后 我得到了 jsp 错误而不是 servlet 错误 我无法真正将原始代码粘贴到此处 但 内的代码本质上检索在 Struts 1 项
  • “编译时分配的内存”到底是什么意思?

    在 C 和 C 等编程语言中 人们经常提到静态和动态内存分配 我理解这个概念 但 所有内存在编译时都被分配 保留 这句话总是让我感到困惑 据我理解 编译是将高级 C C 代码转换为机器语言并输出可执行文件 编译文件中的内存是如何 分配 的
  • elasticsearch 按数组字段的大小进行过滤

    如何过滤包含数组字段且元素数量超过 N 的文档 如何过滤字段为空数组的文档 切面是解决方案吗 如果是这样 怎么办 我想看看脚本过滤器 http www elasticsearch org guide reference query dsl
  • Elasticsearch 集群“master_not_discovered_exception”

    我已经安装了elasticsearch 2 2 3并在2个节点的集群中进行了配置 节点 1 elasticsearch yml cluster name my cluster node name node1 bootstrap mlocka
  • 语音识别在 Unity Hololens 项目中不起作用

    我正在尝试在 Hololens 中创建自己的具有语音识别功能的 Unity 项目 我复制粘贴了来自的说明tutorial https developer microsoft com en us windows holographic hol
  • 查明某个类型是否实现了通用接口

    假设我有一个类型 MyType 我想做以下事情 查明对于某些 T MyType 是否实现了 IList 接口 如果 1 的答案是肯定的 请找出 T 是什么 似乎执行此操作的方法是 GetInterface 但它只能让您按特定名称进行搜索 有