Luego de indagar en diversos repositorios y páginas webs de internet al final hemos descubierto la solución que te compartiremos ahora.
Solución:
Toda la información que busca se puede encontrar aquí y aquí (gracias Reed Copsey):
Desde el primer enlace:
Clases y estructuras que se declaran directamente dentro de un espacio de nombres (en otras palabras, que no están anidadas dentro de otras clases o estructuras) pueden ser públicas o internas. Interno es el predeterminado si no se especifica ningún modificador de acceso.
…
El nivel de acceso para miembros de clase y miembros de estructura, incluidas las clases y estructuras anidadas, es privado por defecto.
…
interfaces predeterminado a interno acceso.
…
Delegados se comportan como clases y estructuras. Por defecto, tienen acceso interno cuando se declara directamente dentro de un espacio de nombres y acceso privado cuando está anidado.
Desde el segundo enlace:
Tipos de nivel superior, que no están anidados en otros tipos, solo pueden tener accesibilidad interna o pública. El la accesibilidad predeterminada para estos tipos es interna.
Y para tipos anidados:
Members of Default member accessibility ---------- ---------------------------- enum public class private interface public struct private
Desde MSDN:
Tipos de nivel superior, que no están anidados en otros tipos, solo pueden tener internal
o public
accesibilidad. La accesibilidad predeterminada para estos tipos es internal
.
Tipos anidados, que son miembros de otros tipos, pueden tener accesibilidades declaradas como se indica en la siguiente tabla.
Fuente: Niveles de accesibilidad (referencia de C #) (6 de diciembreth, 2017)
De forma predeterminada, el modificador de acceso para una clase es internal
. Eso significa que se puede acceder a una clase dentro del mismo ensamblado. Pero si queremos que se acceda a la clase desde otros ensamblados, entonces debe hacerse pública.
Tienes la posibilidad dar recomendación a esta división si si solucionó tu problema.