Je me demandais comment on peut conditionnellement cacher les données en classe. Par exemple, disons que j'ai une classe appelée Car qui a trois champs: Engine, MeterReading et Mileage.Comment implémenter l'encapsulation conditionnelle en C#
J'ai trois autres entités appelées: Driver, Mechanic et Passenger. Maintenant, ce que je veux est que:
Un pilote ne devrait être en mesure d'accéder Mileage (et non du moteur et MeterReading)
Un mécanicien ne doit pouvoir accéder à moteur et le kilométrage (et non MeterReading)
Un passager devrait seulement pouvoir accéder à MeterReading (et non au moteur et au kilométrage)
Quelle pourrait être la meilleure manière d'implémenter ceci .. (sans baser toute la logique dessus si d'autres instructions)?
Des idées les gars?
Merci.
Bien sûr, cela ne fait que prévenir les accidents lors du codage, mais ce n'est pas une mesure de sécurité contre les clients hostiles parce que le code client peut encore convertir une instance de 'IUsableByPassenger' en' Car' et ensuite 'IUsableByMechanic' et tous les autres. – Timwi
Bien sûr, mais il n'y a aucun moyen d'éviter cela lors de l'exposition de tout objet capable de faire plus qu'exposé. On peut toujours utiliser la réflexion pour trouver un type, lire des fichiers privés, etc. – NOtherDev
@A: Il est possible d'empêcher le code client non sécurisé d'utiliser la réflexion, mais pas d'empêcher le simple casting. – Timwi