获取系统命名空间中所有 .net 可用类型

Get all .net available type in system namespace

是否有函数或使用反射获取所有系统类型的方法。

像那些: - System.Int64

我们有一个旧的 enum 存储一些数据类型。我们需要将它们转换为 .net types.

假设您只需要 mscorlib 中的类型,这很简单:

var mscorlib = typeof(string).Assembly;
var types = mscorlib.GetTypes()
                    .Where(t => t.Namespace == "System");

但是,不会 return byte[],因为那是数组类型。它也不会 return 在不同的程序集中键入。如果您有多个感兴趣的程序集,您可以使用:

var assemblies = ...;
var types = assemblies.SelectMany(a => a.GetTypes())
                      .Where(t => t.Namespace == "System");

@jon-skeet:非常感谢您的出色解决方案!

如果一些完全的菜鸟(像我)阅读了这个主题,我发现对 Jon Skeet 的代码进行了微小的调整以获得更具体的输出。例如:

        Assembly mscorlib = typeof(int).Assembly; 
        IEnumerable<System.Type> types = mscorlib.GetTypes()
                            .Where(t => t.Namespace == "System" && t.IsPrimitive);

最后一个代码行中的第二个参数“...&& t.{here_is_property}”是类型 Class 属性之一。您可以尝试 .NET official reference 中的另一个来获得您真正需要的。