c# - 有没有办法获得通用类型信息
问题描述
我有这个课程:
class Test<K,V> {}
class Test1 : Test<int, string> {}
有没有办法从Test1
它所表现的实例中获取信息int, string
?
解决方案
看来,您需要基本类型的通用参数:
using System.Reflection;
...
Type[] generics = typeof(Test1)
.BaseType // Test<K, V>
.GetGenericArguments(); // {K, V}
Console.Write(string.Join(", ", generics.Select(t => t.Name)));
结果:
Int32, String
如果您有实例,请使用.GetType()
:
Test1 myTest = ...
Type[] generics = myTest
.GetType() // Test1
.BaseType // Test<K, V>
.GetGenericArguments(); // {K, V}
推荐阅读
- python - 在两个数据帧中随机采样相同的位置
- java - 确保我的代码逻辑合理。此代码最终将导致 yahtzee 的 java 表示
- python - 如何计算特定名称出现在 pandas 数据框列中的次数?
- python - “找不到与平台无关的库
" 尝试通过大学系统远程访问 jupyter notebook 时出错 - javascript - Javascript - 我看不到值总和的结果
- matlab - 在欧拉方法变得不可靠之前,可以使用的最小步长是多少?
- java - 在 Java 中检测打开的文件夹(JNativeHook)
- api - 将新语言与对话流代理集成
- c - 如何在没有终端的情况下启动 gvim?
- html - 浏览器忽略下载属性