una tipos sirve revolucion que partes para nacional funciona françesa constituyente como asamblea c# assemblies internal

c# - tipos - que es una asamblea



C#asambleas, ¿qué hay en una asamblea? (5)

Básicamente, no puede hacer que una variable sea visible solo desde un espacio de nombres determinado. Como cualquiera puede definir cualquier espacio de nombres, esto haría que la idea de vacío internal : solo tendría que escribir

namespace System { public static MySystemInternalSpy { public static void SpyInternals() { ... } } }

para acceder a cualquier variable, clase o método definido como internal en el espacio de nombres del System , por ejemplo.

Estoy tratando de entender el modificador de acceso interno en C #. Parece que no puedo entender qué es exactamente un ensamblaje y qué parte de mi programa se encuentra dentro de ese ensamblaje. Estaba tratando de hacer que una variable fuera accesible solo por objetos dentro del siguiente espacio de nombres:

namespace Engine.Entity

La variable en cuestión se define en una clase dentro de ese espacio de nombres, por lo que asumí que si la hice interna, solo los objetos dentro de ese espacio de nombres tendrán acceso a ella. Estoy viendo las asambleas y los espacios de nombres como uno solo, y no creo que eso sea correcto.


Desde interno (Referencia C #)

La palabra clave interna es un modificador de acceso para tipos y miembros de tipo. Los tipos internos o miembros son accesibles solo dentro de archivos en el mismo ensamblaje

Así que esto significa desde dentro del mismo ensamblado / dll, no namespace .


El espacio de nombres / ensamblaje confunde fácilmente a las personas, ya que desacopla el concepto de dónde se ubica físicamente el código (el ensamblaje) y cómo se hace referencia a él (la referencia lógica es mediante el uso del espacio de nombres y la referencia física se refiere al ensamblaje).

Usualmente explico esto usando la palabra contribute :

  1. Un ensamblaje puede contribuir a múltiples espacios de nombres .
    Por ejemplo, el conjunto System.Data.dll contribuye a los espacios de nombres como System.Data (por ejemplo, la clase System.Data.DataTable ) y Microsoft.SqlServer.Server (por ejemplo, la clase Microsoft.SqlServer.Server.SqlContext ).

  2. Los conjuntos múltiples pueden contribuir a un solo espacio de nombres .
    Por ejemplo, tanto el conjunto System.Data.dll como el conjunto System.Xml.dll contribuyen al espacio de nombres System.Xml .
    Lo que significa que si usa la clase System.Xml.XmlDataDocument de su proyecto, debe hacer referencia al ensamblado System.Data.dll .
    Y si usa la clase System.Xml.XmlDocument , necesita hacer referencia al System.Xml.dll de su proyecto.

(Los ejemplos anteriores son .NET 4.0, pero probablemente se mantengan para versiones anteriores de .NET).

explained el concepto de namespace de namespace e internal , así que no voy a entrar en detalles sobre eso.

--geno


Los espacios de nombres afectan solo a la resolución de nombres. Los espacios de nombres no implican ningún tipo de almacenamiento, ni los espacios de nombres determinan qué DLL contienen su código. Los espacios de nombres le permiten agrupar cosas relacionadas bajo un nombre lógico, aunque pueden residir físicamente en diferentes DLL.

Un ensamblaje es básicamente un archivo DLL o EXE. Contiene el código IL y la información de tipo que describe el código en esa DLL o EXE. También puede contener muchas otras cosas, pero para empezar, simplemente piense en ello como una DLL.

Usted coloca su código en un conjunto particular al compilarlo en un proyecto (csproj) que produce la DLL o el EXE.

Un espacio de nombres puede abarcar múltiples ensamblajes. Es decir, las clases que son miembros de ese espacio de nombres lógicos pueden residir en múltiples DLL. Puede acceder a una clase particular en su código fuente solo si su proyecto hace referencia al ensamblaje correcto (DLL) que contiene esa clase.

El modificador interno significa que solo se puede acceder al símbolo desde el mismo ensamblaje. Solo el código compilado en la misma DLL que su código puede acceder a sus propiedades o métodos que están etiquetados como internos.


Los espacios de nombres y ensamblajes no son sinónimos. A menudo, un espacio de nombres abarca varios ensamblajes. Cualquier código administrado construido desde Visual studio tiene una correspondencia de proyectos uno a uno para ensamblar a binarios DLL / EXE.

Sin embargo, si vincula su código administrado con la línea de comando, puede crear un ensamblaje en el que múltiples archivos de proyectos pertenezcan a un ensamblaje (lo que significa que varios archivos en su disco representan un ensamblaje). Pero no importa este caso, es una cosa esotérica que nunca ocurre en la práctica.

El modificador de acceso ''interno'' simplemente significa que solo se puede acceder al objetivo desde dentro de ese ensamblaje. No tiene relación con los espacios de nombres.