practices - generate documentation c#
¿Qué es un módulo en.NET? (4)
¿Qué es exactamente un Módulo? ¿Cuál es la diferencia entre un módulo, una clase y una función? ¿Cómo puedo acceder a un Módulo en c # .net?
ACTUALIZACIÓN: Estoy preguntando esto porque, sin usar la firma de código, quiero calcular una suma de comprobación del código IL de solo algunas funciones particulares (en tiempo de ejecución).
Un archivo
Eso es lo que es un módulo.
module: A single file containing content that can be executed by the VES
(Donde VES
es un programa que lee el ensamblado de .NET y lo convierte en código de máquina.) Vea http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf Partición I página 16.
-
Un ensamblaje es una colección coherente de archivos en el sistema de archivos (módulos). Ver http://msdn.microsoft.com/en-us/library/zst29sk2(vs.71).aspx
Obviamente, las definiciones de clase se definen dentro del archivo (módulo) en sí mismo.
Como una adición a las otras respuestas:
El MSDN establece que: "Un módulo es un archivo de lenguaje intermedio de Microsoft (MSIL) que no tiene un manifiesto de ensamblaje".
Los módulos se pueden "unir" entre sí generando un manifiesto de ensamblaje con la herramienta Assembly Linker (al.exe). Si lo recuerdo correctamente, el CLR puede cargar módulos individuales para un ensamblaje, de modo que solo se carguen los módulos necesarios.
EDIT: encontré una mejor descripción de los Netmodules y por qué los querrías.
Hay otra question aquí en SO que toca el tema de suma de comprobación. Las respuestas mencionan el uso del método GetILAsByteArray para obtener el IL.
También hay una declaración de "módulo" de VB que no está relacionada con ensamblados y compilación y es similar a la clase estática de C #:
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/module-statement
Una instrucción Module define un tipo de referencia disponible en todo su espacio de nombres. Un módulo (a veces llamado módulo estándar) es similar a una clase pero con algunas distinciones importantes. Cada módulo tiene exactamente una instancia y no necesita ser creado o asignado a una variable. Los módulos no admiten la herencia o implementan interfaces. Observe que un módulo no es un tipo en el sentido de que una clase o estructura es - no puede declarar que un elemento de programación tenga el tipo de datos de un módulo.
Puede usar el Módulo solo en el nivel del espacio de nombres. Esto significa que el contexto de declaración para un módulo debe ser un archivo fuente o espacio de nombres, y no puede ser una clase, estructura, módulo, interfaz, procedimiento o bloque. No puede anidar un módulo dentro de otro módulo ni dentro de ningún tipo. Para obtener más información, vea Contextos de declaración y Niveles de acceso predeterminados.
Un módulo tiene la misma duración que su programa. Como sus miembros son todos Compartidos, también tienen vidas iguales a las del programa.
Módulos predeterminados para el acceso de Friend. Puede ajustar sus niveles de acceso con los modificadores de acceso. Para obtener más información, vea Niveles de acceso en Visual Basic.
Todos los miembros de un módulo están implícitamente compartidos.
En resumen, los módulos en VB son análogos para clases estáticas C #
Un módulo es una recopilación lógica de código dentro de una Asamblea. Puede tener múltiples módulos dentro de un Ensamblaje, y cada módulo puede escribirse en diferentes lenguajes .NET (VS, hasta donde yo sé, no admite la creación de ensambles de múltiples módulos).
Los ensambles contienen módulos. Los módulos contienen clases. Las clases contienen funciones.
Sí, puede acceder a ensamblajes, módulos, clases, funciones, propiedades, campos, etc. todo a través de la reflexión en tiempo de ejecución.