[英]Is there .Net 4 commonly used namespaces poster?
必須有一整套這樣的海報。 在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.