当前位置:  开发笔记 > 编程语言 > 正文

反射 - 从System.Type实例获取通用参数

如何解决《反射-从System.Type实例获取通用参数》经验,为你挑选了2个好方法。

如果我有以下代码:

MyType anInstance = new MyType();
Type type = anInstance.GetType();

通过查看类型变量,如何找出实例化的"anInstance"类型参数?可能吗 ?



1> Jon Skeet..:

使用Type.GetGenericArguments.例如:

using System;
using System.Collections.Generic;

public class Test
{
    static void Main()
    {
        var dict = new Dictionary();

        Type type = dict.GetType();
        Console.WriteLine("Type arguments:");
        foreach (Type arg in type.GetGenericArguments())
        {
            Console.WriteLine("  {0}", arg);
        }
    }
}

输出:

Type arguments:
  System.String
  System.Int32



2> Hans Passant..:

使用Type.GetGenericArguments().例如:

using System;
using System.Reflection;

namespace ConsoleApplication1 {
  class Program {
    static void Main(string[] args) {
      MyType anInstance = new MyType();
      Type type = anInstance.GetType();
      foreach (Type t in type.GetGenericArguments())
        Console.WriteLine(t.Name);
      Console.ReadLine();
    }
  }
  public class MyType { }
}

输出:Int32

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有