Точно, насколько большой.NET (3.5) Библиотека классов Платформы?

Я регулярно читал, что платформа является просто слишком большой, чтобы у одного разработчика был опыт с каждой частью ее. Наличие некоторых фактических чисел, конечно, помогло бы поместить вещи в перспективу.

MSDN, кажется, перечисляет их всех кроме нет никаких фактических чисел (от того, что я видел), и часы расходов, считая их не моя идея продуктивного времени.

  • Количество пространств имен
  • Количество классов
  • Количество структур
  • Количество интерфейсов

Я понимаю, что существуют также делегаты, перечисления, события, и т.д., но вышеупомянутые типы представляют большую часть интереса.

Кроме того, количество типов в Библиотеке базовых классов (BCL), а также размере полной Библиотеки классов платформы (FCL) было бы интересно.

Эта информация была бы полезна 2 способами:

Во-первых, чтобы разобраться, с каким количеством из полной платформы Вы на самом деле работали и сколько все еще необходимо изучить.

Во-вторых, многие программисты с других платформ (и нетехнические люди) часто удивляются, что программист может провести большую часть их времени в "Платформе.NET". Наличие некоторых чисел, конечно, помогло бы объяснить, почему это не признак узких навыков/опыта.

[Обновление]

С помощью кода Andrew (на моей.NET 3,5 системы SP1) я добираюсь:

Classes: 12688
Value types: 4438
Interfaces: 1296
10
задан JasonMArcher 5 September 2014 в 05:38
поделиться

5 ответов

Эти 2 сообщения в блоге обратитесь к этой теме:

Результаты разбиты по количеству узлов, пространств имен, типов, членов и других предметов.

6
ответ дан 3 December 2019 в 23:50
поделиться

Вы можете использовать отражение, чтобы найти количество различных типов в 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);
    }
}
5
ответ дан 3 December 2019 в 23:50
поделиться

Я сам не использовал его, но я думаю, что это такая информация, которую NDEPend может предоставить вам.

2
ответ дан 3 December 2019 в 23:50
поделиться

Это настолько большая, что никто не знает его размер?

Насколько проходит размер файла, на моей системе 2.0, 3.0 и 3.5 Frameworks занимает около 130 МБ дискового пространства, а 64 Битовые версии берут примерно 93 МБ. Но это не считает материал, который является ядром для Win7 сама.

0
ответ дан 3 December 2019 в 23:50
поделиться

Это немного сложно ответить, не имея определения того, что «большие» средства - IL (.dll) размером? Размер исходного кода? Область применения функциональности? Кроме того, вы говорите о самых недавних перераспределенных из 3,5 SP1 без каких-либо официальных дополнений (то есть F # вещей, MVC и т. Д.), которые являются полностью поддерживающимися частями «рамки», но не отправляются с 3.5 Перераспределяемый?

Я не пытаюсь быть сложным ... Я просто говорю, что есть несколько переменных, которые могут даже определить, что нужно измерить, то некоторые вопросы о каком палочке используются измерить это.

0
ответ дан 3 December 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: