gpt4 book ai didi

c# - 如何反射(reflect)用于继承的泛型参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:49 25 4
gpt4 key购买 nike

假设我有以下类层次结构:TaskViewer继承自 ListViewer<Task>又继承自 ViewerBase .

如果我调试一个在 ViewerBase 中声明的方法看看this.GetType() , 它正确返回 TaskViewer .但是,我找不到可以返回继承中使用的通用参数的属性或方法,即 Task .显然,如果我在 TaskViewer 的上下文中或 ListViewer<T>那么我很容易知道这一点。

我可以看到它是 Task通过查看 BaseType.FullName属性,但我浏览了该列表,但我看不到任何东西表明自己使用了该通用参数。

如何从根类的这个方法中获取原始泛型参数?

最佳答案

您可以按如下方式访问基类型的泛型参数(假设只有一个类型参数)。

typeof(TaskViewer).BaseType.GetGenericArguments()[0]

ViewerBase 中你会使用

this.GetType().BaseType.GetGenericArguments()[0]

但是在基类中查看派生类的泛型类型参数似乎很奇怪。您无法知道实际类型是什么,因此不知道它是否具有通用参数。能否介绍一下您的使用场景?

关于c# - 如何反射(reflect)用于继承的泛型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1127956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com