Что такое модуль в .NET?

Что такое модуль? В чем разница между модулем, классом и функцией? Как я могу получить доступ к модулю в С#.net?

UPDATE: Я спрашиваю об этом, потому что, без использования подписи кода, я хочу вычислить контрольную сумму кода IL только для некоторых определенных функций (во время выполнения).

Ответы

Ответ 1

Модуль является логической коллекцией кода в сборке. Вы можете иметь несколько модулей внутри сборки, и каждый модуль может быть написан на разных языках .NET(VS, насколько мне известно, не поддерживает создание многомодульных сборок).

Ассембли содержат модули. Модули содержат классы. Классы содержат функции.

Да, вы можете получить доступ к сборкам, модулям, классам, функциям, свойствам, полям и т.д. через отражение во время выполнения.

Ответ 2

В дополнение к другим ответам:

MSDN заявляет, что: "Модуль - это файл промежуточного языка Microsoft (MSIL), который не имеет манифеста сборки".

Модули могут быть "связаны" вместе, создавая манифест сборки с помощью утилиты Assembly Linker (al.exe). Если я правильно его помню, CLR может загружать отдельные модули для сборки, так что загружаются только необходимые модули.

EDIT: найдено лучшее описание Netmodules и почему вы захотите их.

Здесь есть еще question здесь, где затрагивается объект контрольной суммы. В ответах упоминается использование метода GetILAsByteArray для получения ИЛ.

Ответ 3

Файл

Что такое модуль.

module: A single file containing content that can be executed by the VES

(Где VES - это программа, которая читает сборку .NET и преобразует ее в машинный код.) см. http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf Страница раздела я 16.

-

Сборка - это когерентный сбор файлов в файловой системе (модулях). См. http://msdn.microsoft.com/en-us/library/zst29sk2(vs.71).aspx

Очевидно, определения классов определены внутри файла (модуля) itelf.