我如何识别通用类?

2024-01-23

我怎样才能识别(.NET2)一个泛型类?

Class A(Of T)
End Class

' not work '
If TypeOf myObject Is A Then

?


如果用 c# 的话会是这样的:

public class A<T>
{
}

A<int> a = new A<int>();

if (a.GetType().IsGenericType && 
    a.GetType().GetGenericTypeDefinition() == typeof(A<>))
{
}

UPDATED:

看起来这就是您真正需要的:

public static bool IsSubclassOf(Type childType, Type parentType)
{
    bool isParentGeneric = parentType.IsGenericType;

    return IsSubclassOf(childType, parentType, isParentGeneric);
}

private static bool IsSubclassOf(Type childType, Type parentType, bool isParentGeneric)
{
    if (childType == null)
    {
        return false;
    }

    childType = isParentGeneric && childType.IsGenericType ? childType.GetGenericTypeDefinition() : childType;

    if (childType == parentType)
    {
        return true;
    }

    return IsSubclassOf(childType.BaseType, parentType, isParentGeneric);
}

并且可以像这样使用:

public class A<T>
{
}

public class B : A<int>
{

}

B b = new B();
bool isSubclass = IsSubclassOf(b.GetType(), typeof (A<>)); // returns true;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何识别通用类? 的相关文章

随机推荐

  • 配置 MapReduce 作业时使用多个 InputFormat 类

    我想编写一个可以处理文本和 zip 文件的 MapReduce 应用程序 为此 我想使用不同的输入格式 一种用于文本 另一种用于 zip 可以这样做吗 从 ChrisWhite的答案延伸一点 你需要的是使用自定义InputFormat an
  • 如何修复 Xcode“DTAssetProviderService 无法启动..”错误?

    我已经升级了 macOS Sierra Developer Preview 但是我的Xcode 7 3 1尝试在模拟器上运行我的项目时出现以下错误 此外 Generic to archieve 还给出了另一个错误 例如 此外 对于存档 发生
  • 如何将此 SQL 查询转换为 LINQ 或 Lambda 表达式?

    我有以下 SQL 查询 SELECT C ID C Name FROM Category C JOIN Layout L ON C ID L CategoryID JOIN Position P ON L PositionID LIKE C
  • 无法使用 Desktop Docker 设置通过节点端口访问 Kubernetes 服务

    我在 Windows 10 上使用 Docker Desktop 我生成 kubernetes NodePort 服务以从客户端 Web 浏览器访问 http 10 110 201 24 30008 hello praveen http 1
  • 停留在基本的 Linq to XML 查询上

    我正在尝试从 namecheap 沙箱 api 中提取信息 但无法弄清楚为什么我的 linq 查询不起作用 这是一个示例响应 XML
  • php 中的文件锁定

    我有一个新人 隔壁的少年 编写了一些 php 代码来跟踪我网站上的一些使用情况 我不熟悉 php 所以我想问一些关于并发文件访问的问题 我的本机应用程序 在 Windows 上 偶尔会通过点击包含我的 php 脚本的 URL 来将一些数据记
  • 从地图外部将对象拖放到 Google 地图中:标记未放置在正确的纬度/经度处

    我想从地图外部将一个对象拖到我的 Google 地图 API V3 中 经过一番研究 我发现这个非常有帮助的帖子 https stackoverflow com a 5921814 1866810我尝试将其适应我的项目 主要思想是在地图上拖
  • MVC路由问题

    我想按如下方式设置路由 Profile Edit gt 编辑操作的路由 Profile Add gt 添加操作的路由 Profile username gt 使用参数 username 路由到 Index 操作 因为操作用户名不存在 所以我
  • EventBus 和 RxJava 有什么区别? [复制]

    这个问题在这里已经有答案了 我对 android 中的 EventBus 和 RxJava 之间的区别感到困惑 我需要实现其中之一来解决我的问题 即在完成某些更改后通知某些组件 以便它们可以更新其状态 另外 我读到 EventsBus 已因
  • Java 禁用 dpi 感知不起作用

    我正在尝试运行 Java 应用程序 Dsun java2d dpiaware false争论但什么也没发生 我希望有一个模糊的用户界面 但对于正常大小的图标和字体 这个标志似乎不起作用 我在 Windows 8 1 上使用 JDK 1 8
  • 从 pySpark SQL 写入远程 mysql 数据库 (JDBC) 获取新行 id

    我正在使用 pyspark sql 使用 JDBC 在远程 mysql 数据库中创建行 我有两张桌子 parent table id value and child table id value parent id 所以每一行parent
  • 如何关闭颜色并删除 Git 日志中的时间?

    正如标题所说 如何关闭颜色并去除时间 因为我需要将输出复制到pbcopy 但颜色模式会使输出包含特殊字符 我已将以下内容添加到 gitconfig文件 以删除大部分颜色 color ui false branch false diff fa
  • 为什么 ConcurrentSkipListSet 升序迭代器比降序迭代器“更快”?

    我在 ConcurrentSkipListSet 上使用 DescendingIterator 方法 我刚刚检查了文档并注意到以下评论 升序视图及其迭代器比降序视图及其迭代器更快 See https docs oracle com java
  • 如何通用地创建从泛型类型继承的存储库?

    我目前正在尝试实施存储库模式在我的 DbContext 之上 问题是 我最终遇到了一种情况 我必须将多个存储库注入到一个UnitOfWork构造函数 像这样 public class UnitOfWork private DbContext
  • 我可以找到最后一次值更改的时间戳吗

    给定一个时间序列 是否可以找到最后一个值变化的时间戳 例如 一个 cron 作业每晚运行 它首先运行 rsync 作业 然后计算目标目录的大小 实际的指标值并不是那么重要 但我想验证它实际上每天晚上都会发生变化 是否可以创建一个返回标量值以
  • 反转多对多字典>

    实际上我之前的问题 https stackoverflow com questions 1324912 convert dictionaryint enumerable to dictionaryint enumerable inverti
  • 使用 Linux、iOS、蓝牙、Bonjour、GameKit 进行 PAN —— 可能吗?

    所以我读了关于这个问题的不同看法 我想我读了所有相关的问题 我可以在 PAN 中连接吗 我可以编写一个应用程序来通过蓝牙连接我的 Linux 机器和我的 iOS 设备吗 使用或不使用 Bonjour 或 GameKit 几个必备条件 iOS
  • 通用数组创建错误

    我正在尝试创建一个具有通用顶点和邻接列表的 Graph 类 并且在以下代码的第 10 行处收到通用数组创建错误 早些时候我在第 11 行遇到了同样的错误 但它通过强制转换解决了 但这个错误仍然存 在 代码中有什么问题 import java
  • 为什么这段 Python 代码运行了两次? [复制]

    这个问题在这里已经有答案了 我有一个 Python 脚本 只有这两行 import requests print len dir requests 它打印 12 48 当我打印实际列表时dir requests 我明白了 author bu
  • 我如何识别通用类?

    我怎样才能识别 NET2 一个泛型类 Class A Of T End Class not work If TypeOf myObject Is A Then 如果用 c 的话会是这样的 public class A