有没有办法获取通用的typeinfo

时间:2018-07-19 13:21:07

标签: c# generics reflection

我有这节课:

class Test<K,V> {}

class Test1 : Test<int, string> {}

是否可以从行为Test1的{​​{1}}实例获取信息?

1 个答案:

答案 0 :(得分:3)

似乎,您想要基本类型的通用参数

  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}