Я регулярно читал, что платформа является просто слишком большой, чтобы у одного разработчика был опыт с каждой частью ее. Наличие некоторых фактических чисел, конечно, помогло бы поместить вещи в перспективу.
MSDN, кажется, перечисляет их всех кроме нет никаких фактических чисел (от того, что я видел), и часы расходов, считая их не моя идея продуктивного времени.
Я понимаю, что существуют также делегаты, перечисления, события, и т.д., но вышеупомянутые типы представляют большую часть интереса.
Кроме того, количество типов в Библиотеке базовых классов (BCL), а также размере полной Библиотеки классов платформы (FCL) было бы интересно.
Эта информация была бы полезна 2 способами:
Во-первых, чтобы разобраться, с каким количеством из полной платформы Вы на самом деле работали и сколько все еще необходимо изучить.
Во-вторых, многие программисты с других платформ (и нетехнические люди) часто удивляются, что программист может провести большую часть их времени в "Платформе.NET". Наличие некоторых чисел, конечно, помогло бы объяснить, почему это не признак узких навыков/опыта.
[Обновление]
С помощью кода Andrew (на моей.NET 3,5 системы SP1) я добираюсь:
Classes: 12688 Value types: 4438 Interfaces: 1296
Эти 2 сообщения в блоге обратитесь к этой теме:
Результаты разбиты по количеству узлов, пространств имен, типов, членов и других предметов.
Вы можете использовать отражение, чтобы найти количество различных типов в BCL, но что вы надеетесь выполнить с этой информацией?
Вот пример того, как получить эту информацию:
using System;
using System.Linq;
using System.Reflection;
class Example
{
static void Main()
{
Assembly mscorlib = typeof(String).Assembly;
// Number of classes
Console.WriteLine(mscorlib.GetTypes().Where(t => t.IsClass).Count());
// Number of value types (structs and enums)
Console.WriteLine(mscorlib.GetTypes().Where(t => t.IsValueType).Count());
// Number of interfaces
Console.WriteLine(mscorlib.GetTypes().Where(t => t.IsInterface).Count());
}
}
Просто обратите внимание, что вы будете Нужно сделать это для каждой сборки в рамках для получения общего количества.
Редактировать: Вот быстрое и грязное решение, которое должно дать вам общее представление о количестве типов в BCL:
using System;
using System.Linq;
using System.Reflection;
using System.IO;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Get all DLLs in the current runtime directory
var assemblies = Directory.GetFiles(
RuntimeEnvironment.GetRuntimeDirectory())
.Where(f => f.EndsWith(".dll"));
Int32 classes = 0;
Int32 valueTypes = 0;
Int32 interfaces = 0;
foreach (String name in assemblies)
{
// We need to catch BadImageFormatException
// because not all DLLs in the runtime directory
// are CLR assemblies.
try
{
var types = Assembly.LoadFile(name).GetTypes();
classes += types.Where(t => t.IsClass).Count();
valueTypes += types.Where(t => t.IsValueType).Count();
interfaces += types.Where(t => t.IsInterface).Count();
}
catch (BadImageFormatException) { }
}
Console.WriteLine("Classes: {0}", classes);
Console.WriteLine("Value types: {0}", valueTypes);
Console.WriteLine("Interfaces: {0}", interfaces);
}
}
Я сам не использовал его, но я думаю, что это такая информация, которую NDEPend может предоставить вам.
Это настолько большая, что никто не знает его размер?
Насколько проходит размер файла, на моей системе 2.0, 3.0 и 3.5 Frameworks занимает около 130 МБ дискового пространства, а 64 Битовые версии берут примерно 93 МБ. Но это не считает материал, который является ядром для Win7 сама.
Это немного сложно ответить, не имея определения того, что «большие» средства - IL (.dll) размером? Размер исходного кода? Область применения функциональности? Кроме того, вы говорите о самых недавних перераспределенных из 3,5 SP1 без каких-либо официальных дополнений (то есть F # вещей, MVC и т. Д.), которые являются полностью поддерживающимися частями «рамки», но не отправляются с 3.5 Перераспределяемый?
Я не пытаюсь быть сложным ... Я просто говорю, что есть несколько переменных, которые могут даже определить, что нужно измерить, то некоторые вопросы о каком палочке используются измерить это.