Есть ли .Net 4 широко используемый плакат пространств имен?
Я ищу .Net 4 широко используемый плакат пространств имен, например этот доступен для .NET 3.5. До сих пор мне удалось найти только плакат .NET Framework 4.0 важных пространств имён и типов, но есть ли что-то более подробное?
Ответы
Ответ 1
Есть и этот, но я считаю его более древним: http://brad_abrams.members.winisp.net/Projects/PDC2008/PDC2008-NETFX4.pdf
Еще одна ссылка на тот же файл: http://download.microsoft.com/download/9/2/3/923d72fb-0076-49b6-96c4-aac1c255a60e/PDC2008-NETFX4.pdf
Ответ 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}");
}
}
}