Estoy aprendiendo C# y provengo de un mundo Java, estaba un poco confundido al ver que C# no tiene un "paquete privado". La mayoría de los comentarios que he visto sobre esta cantidad son "No se puede hacer, el idioma no se diseñó de esta manera". También vi algunas soluciones que incluyen internal
y partial
junto con comentarios que dicen que estas soluciones alternativas van en contra del diseño del idioma.¿Por qué C no tiene paquete privado?
¿Por qué se diseñó C# de esta manera? Además, ¿cómo haré algo como lo siguiente? Tengo una clase Product
y una clase ProductInstance
. La única forma en que quiero que se cree un ProductInstance
es mediante un método de fábrica en la clase Product
. En Java, pondría ProductInstance
en el mismo paquete que Product
, pero hago su constructor package private
para que solo Product
tenga acceso a él. De esta manera, cualquiera que quiera crear un ProductInstance
solo puede hacerlo a través del método de fábrica en la clase Product
. ¿Cómo lograría lo mismo en C#?
Haga que el constructor de clases del producto sea privado, luego tenga una función estática pública que devuelva una instancia del producto, por ejemplo: var p = Product.GetProductInstance –
Al ver las respuestas, no veo respuesta al por qué. Siento que es un gran olor a código establecer un método "interno" en el que está destinado a ser utilizado solo por unas pocas clases "amigables" (ver la palabra clave 'friend' en C++). No quiero dividir mi aplicación en cientos de dll solo para evitar el acceso maloliente, ni me gusta dejar abierta la implementación de mis detalles (básicamente pública para todo el equipo de desarrollo). ¿Debo escribir clases gigantes con diez subclases para superar esta limitación? – PPC