【问题标题】:Getting all types in a System namespace获取系统命名空间中的所有类型
【发布时间】:2020-01-26 17:40:55
【问题描述】:

我想打印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 命名空间中它不起作用并且什么也不打印。

【问题讨论】:

    标签: c# .net namespaces system


    【解决方案1】:

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

    您可以使用以下内容:

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

    【讨论】:

      【解决方案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 发布了一个更好的方法。

      【讨论】:

        猜你喜欢
        • 2015-06-15
        • 2020-11-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-09
        • 2014-01-29
        • 2016-10-13
        • 1970-01-01
        • 2010-10-31
        相关资源
        最近更新 更多