¿Es esto posible en C# de alguna manera? Este es el caso exacto para el que lo necesito: Él (el usuario) no debe poder crear instancias de esta clase. Sin embargo, quiero poder crear instancias de esta clase dentro de mi proyecto. (por lo tanto, internamente) Otras clases deberían poder heredar de él. Quiero obligar al usuario a usar solo la clase Sound más grande. El gran "PERO": el usuario debe poder usar instancias de esta clase si se lo doy, es por eso que no puedo hacerlo interno y terminarlo. Tampoco puedo hacerlo abstracto porque quiero hacer copias yo mismo. Pensé en darle al usuario solo interfaces como IChannel, pero eso no resuelve mi problema de que no debería poder hacer una instancia de Channel. Todavía podrá ver la clase si la busca, y si es lo suficientemente aventurero, incluso intenta crear una instancia. Pero como mencioné antes: no puedo hacerlo abstracto porque necesito hacer copias internamente.Cómo crear una clase que sea abstracta, pero no internamente
¡Apreciar tu ayuda!
Gracias! Lo bueno es que lo haya preguntado, porque lo pensé un poco más, y el método de interfaz habría funcionado si la interfaz fuera pública, supongo que el propio canal interno. Pero hubiera sido feo :) (interfaz adicional que nadie necesita o quiere) – Blub
No estoy de acuerdo; si estuviese probando un código que dependiera de su clase, definitivamente querría una interfaz, ya que las interfaces se pueden apagar fácilmente durante la prueba unitaria. Otra cosa agradable con una interfaz es que solo expone la funcionalidad relevante para el uso público de su clase, que puede ser un subconjunto de los métodos públicos que usa internamente en la clase. –
Terminé creando una interfaz, porque como clase abstracta, Channel heredó otros constructores que antes no tenía en cuenta. No quería el lastre agregado, y por otras razones resultó perfectamente. A veces simplemente golpeas con suerte :) (por ejemplo: otras clases proporcionan la implementación real para IChannel, que será interna. Esto es perfecto ya que tampoco puedes crear una instancia de una interfaz) – Blub