解决方案 »

  1.   

    Assembly是反射dll,获取运行时的类型,你就遍历类对象呗。
      

  2.   

    http://bbs.csdn.net/topics/300148460
    http://blog.csdn.net/findsafety/article/details/21942119
      

  3.   

    举个简单的例子,程序运行时new List<int>,然后我在哪里可以找到这个List<int>类型,而不是List<T>?
      

  4.   

    你说的“已加载”是什么概念?没有具体的说明那只能认为是appdomain加载的所有assembly里面的类型。
    就是使用AppDomain.CurrentDomain.GetAssemblies()获得所有已加载的assembly,然后从这些assembly上GetTypes
      

  5.   

    msdn有答案
    http://msdn.microsoft.com/zh-cn/library/b8ytshk6(v=vs.110).aspx
      

  6.   

    csdn的缓存刷新的够慢的...
    貌似除了profiler api那种东西,是无法查找所有运行时创建的具体泛型类型的。还是根据具体需求,想想别的办法吧。
      

  7.   

    谢谢,就是想要类似的API,希望不是第三方的。
      

  8.   

    又找了找,从.net的TypeSpec这个元数据表里面取是可以找到静态定义的泛型类型。比如代码里用到的List<int>这种。不过这肯定要使用第三方工具,比如cecil或者dnlib,来直接解析元数据。但是这样仍然不可能获得Type.MakeGenericType动态构造的具体泛型类型。profiler api倒是官方的,但是这个一般是调试场景使用,可以监视所有对象的创建。那显然是可以找到所有运行时对象和其类型的。不过这个方案很麻烦,并且肯定严重影响性能。
      

  9.   

    谢谢回复。是的,profiler api不是我想要的东西,我只是想找到所有的类型,监视每一个对象代价太大,看来还得继续找找看。
      

  10.   

    谢谢,就是想要类似的API,希望不是第三方的。List<T>,你不是要知道运行的时候T的实际(String、Int32、或者是一个Class)类型么?