Me preguntaba cómo se pueden ocultar condicionalmente los datos en clase. Por ejemplo, digamos que tengo una clase llamada Car que tiene tres campos: Engine, MeterReading y Mileage.Cómo implementar la encapsulación condicional en C#
Tengo otras tres entidades llamadas: Conductor, mecánico y pasajero. Ahora lo que quiero es que:
Un conductor sólo debe ser capaz de acceder a Kilometraje (y no del motor y MeterReading)
un mecánico sólo debe ser capaz de acceder a motor y cambio de kilometraje (y no MeterReading)
Un pasajero sólo debe ser capaz de acceder MeterReading (y no del motor y cambio de kilometraje)
Cuál podría ser la mejor manera de poner en práctica esta .. (sin basar toda la lógica en si else)?
¿Alguna idea, chicos?
Gracias.
Por supuesto, debe señalarse que esto solo protege contra accidentes durante la codificación, pero no es una medida de seguridad contra clientes hostiles porque el código del cliente todavía puede convertir una instancia de 'IUsableByPassenger' a' Car' y luego a 'IUsableByMechanic' y todos los demás – Timwi
Claro, pero no hay forma de evitar eso al exponer cualquier objeto capaz de hacer algo más que expuesto. Siempre se puede usar la reflexión para encontrar un tipo, leer partes privadas, etc. – NOtherDev
@A: es posible evitar que el código de cliente que no es de confianza use la reflexión, pero no para evitar la conversión simple. – Timwi