簡體   English   中英

是否有.Net 4常用名稱空間海報?

[英]Is there .Net 4 commonly used namespaces poster?

我正在尋找.Net 4常用的命名空間海報,就像這個可用於.NET 3.5的海報一樣。 到目前為止,我已經設法找到只有.NET Framework 4.0的重要命名空間和類型海報,但有更詳細的內容嗎?

必須有一整套這樣的海報。 在ASP.NET電子商務應用程序中“常用”的命名空間和類可能永遠不會出現在XNA游戲開發中。

我寫了一個快速的應用程序來搜索文件夾(及其子文件夾)的程序集,並使用反射來捕獲它們的名稱空間和類。 該應用程序輸出命名空間及其類的排序列表。 我將應用程序指向包含.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}");
        }
    }        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM