代码之家  ›  专栏  ›  技术社区  ›  GreenEyedAndy

有没有一种方法可以得到一般的类型信息

  •  0
  • GreenEyedAndy  · 技术社区  · 6 年前

    我有这些课程:

    class Test<K,V> {}
    
    class Test1 : Test<int, string> {}
    

    有没有方法从 Test1 它的行为 int, string ?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Dmitrii Bychenko    6 年前

    看来,你想要 通用参数 基本类型 :

      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}