首页 > 解决方案 > 有没有办法获得通用类型信息

问题描述

我有这个课程:

class Test<K,V> {}

class Test1 : Test<int, string> {}

有没有办法从Test1它所表现的实例中获取信息int, string

标签: c#genericsreflection

解决方案


看来,您需要基本类型通用参数

  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}

推荐阅读