Tengo una clase Server
que habla con una conexión de servidor para IRC. Tiene una lista de conocidos User
s, y los crea según sea necesario.Hacer que los métodos/propiedades sean visibles para una clase, ocultos para otros
Tengo dos problemas que afectan a la clase User
:
- cualquiera puede crear una instancia de un
User
. Solo quiero que la claseServer
pueda hacer esto. - Si un usuario (lo que
User
describe) cambia su nombre (u otra información, como canales unidos), la claseServer
puede cambiarlo por sí mismo. Sin embargo, ¡otras clases también pueden! Quiero rechazar que otras clases toquen esta información (haciéndola de solo lectura para ellos).
¿Cómo puedo resolver estos dos problemas? En C++, se puede resolver utilizando la palabra clave friend
y haciendo que ctor y setName
(y tal) sean privados.
¿Hay una palabra clave C# que pueda permitir que cierto método sea accesible por una clase especificada? Esto resolvería mi problema.
Fui con los dos métodos que sugirió. Creé una interfaz IUser y una clase interna ServerUser. (También dividí el Servidor en dos clases para que otros puedan escribir sus clientes IRC personalizados.) ¡Gracias por su respuesta! – strager