在系统名称空间中获取所有类型

时间:2019-09-26 12:31:27

标签: c# .net namespaces system

我想打印using Systemusing System.Text的所有类。

我写这段代码:

static void Main(string[] args)
{
    string nspace = "System.Text";
    var q = from t in Assembly.GetExecutingAssembly().GetTypes()
            where t.IsClass && t.Namespace == nspace
            select t;
    q.ToList().ForEach(t => Console.WriteLine(t.Name));
    Console.ReadLine();
}

我在命名空间中编写的这段代码可以正常工作,但是在System命名空间中,此代码无效,什么也不打印。

2 个答案:

答案 0 :(得分:2)

如果要对所有已加载的程序集进行概括,则可以像这样迭代所有已加载的程序集:

public static void Main()
{
    string nspace = "System.Text";

    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
    {
        foreach (var type in assembly.GetTypes().Where(t => t.IsClass && t.Namespace == nspace))
        {
            Console.WriteLine(type.FullName);
        }
    }
}

如果只想从特定程序集中选择类型,则/ u / HimBromBeere发布了一种更好的方法。

答案 1 :(得分:1)

好吧,System.Text在执行的程序集中肯定不是包含的。只是引用

您可以只使用以下内容:

var systemAssembly = typeof(anyTypeFromSystemText).Assembly;
var q = from t in systemAssembly.GetTypes()
        where t.IsClass && t.Namespace == nspace
        select t;