Получение всех типов в пространстве имен System - PullRequest
1 голос
/ 26 сентября 2019

Я хочу напечатать все классы using System и using 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 ]

2 голосов
/ 26 сентября 2019

Если вы хотите обобщить это для ВСЕХ загруженных сборок, вы можете выполнить итерацию всех загруженных сборок следующим образом:

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 голос
/ 26 сентября 2019

Ну, System.Text определенно не содержится в исполняющей сборкеЭто просто ссылка от него.

Вы можете просто использовать следующее:

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