Есть ли .Net 4 широко используемый плакат пространств имен?

Я ищу .Net 4 широко используемый плакат пространств имен, например этот доступен для .NET 3.5. До сих пор мне удалось найти только плакат .NET Framework 4.0 важных пространств имён и типов, но есть ли что-то более подробное?

Ответы

Ответ 2

Там должно быть целая семья таких плакатов. Пространства имен и классы, которые "широко используются" в приложениях электронной коммерции ASP.NET, вероятно, никогда не появятся в разработке игр XNA.

Ответ 3

Я написал быстрое приложение для поиска в папке (и ее подпапках) сборок и использования отражения для захвата их пространств имен и классов. Приложение выводит отсортированный список пространств имен и их классов. Я направил приложение в папку, содержащую сборки .Net 4.0 (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0), чтобы получить список всех пространств имен и классов .Net 4.0. Это не симпатичный плакат, просто список.

Список слишком длинный, чтобы публиковать здесь. Поэтому я опубликую код для моего приложения и позволю вам запускать его самостоятельно для любых файлов, которые вам нравятся. Обратите внимание, что в настоящее время он хрустит .Net 4.0 файлы - вам придется изменить для любых файлов, которые вы хотите.

    internal class ClassInfo
{
    public ClassInfo(string namespaceName, string className)
    {
        NamespaceName = namespaceName;
        ClassName = className;
    }

    public string NamespaceName { get; private set; }
    public string ClassName { get; private set; }
}

class Program
{
    static void Main(string[] args) 
    {
        IList<ClassInfo> _classes = new List<ClassInfo>();
        //DirectoryInfo folder = new DirectoryInfo(Directory.GetCurrentDirectory());
        DirectoryInfo folder = new DirectoryInfo(@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0");

        ProcessFolder(folder, _classes);

        Console.WriteLine();
        Console.WriteLine("*************** NAMESPACES ***************");
        Console.WriteLine();
        PrintNamespaces(_classes);

        Console.WriteLine();
        Console.WriteLine("*************** NAMESPACES/CLASSES ***************");
        Console.WriteLine();
        PrintClassesByNamespaces(_classes);
    }

    private static void PrintNamespaces(IList<ClassInfo> classes)
    {
        var namespaces = (from c in classes
                          orderby c.NamespaceName
                          select c.NamespaceName).Distinct();

        foreach (string s in namespaces)
        {
            Console.WriteLine(s);
        }
    }

    private static void PrintClassesByNamespaces(IList<ClassInfo> classes)
    {
        var namespaces = (from c in classes
                          orderby c.NamespaceName
                          select c.NamespaceName).Distinct();

        foreach (string s in namespaces)
        {
            Console.WriteLine(s);

            var namespaceClasses = (from c in classes
                                    where c.NamespaceName == s
                                    orderby c.ClassName
                                    select c.ClassName).Distinct();

            foreach (string className in namespaceClasses)
            {
                Console.WriteLine($"   {className}");
            }
        }
    }

    public static void ProcessFolder(DirectoryInfo directory, IList<ClassInfo> classes)
    {
        Console.WriteLine($"folder: {directory.FullName}");

        foreach (FileInfo f in directory.GetFiles("*.dll"))
        {
            ProcessAssembly(directory, f.FullName, classes);
        }

        foreach (DirectoryInfo d in directory.GetDirectories())
        {
            ProcessFolder(d, classes);
        }
    }

    private static void ProcessAssembly(DirectoryInfo directory, string fileName, IList<ClassInfo> classes)
    {
        Assembly assembly;

        try
        {
            assembly = Assembly.LoadFile(fileName);

            foreach (var t in assembly.DefinedTypes)
            {
                classes.Add(new ClassInfo(t.Namespace, t.Name));
                Console.WriteLine($"{t.Namespace} - {t.Name}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"something wrong loading {fileName} - {ex.Message}");
        }
    }        
}