Mi chiedevo come si possano nascondere in modo condizionale i dati in classe. Ad esempio, diciamo che ho una classe chiamata Car che ha tre campi: Engine, MeterReading e Chilometraggio.Come implementare l'incapsulamento condizionale in C#
Ho tre altre entità chiamate: Driver, Mechanic e Passenger. Ora quello che voglio è che:
un driver deve solo essere in grado di accedere a distanza in miglia (e non del motore e MeterReading)
Un meccanico deve solo essere in grado di accedere a motore e il chilometraggio (e non MeterReading)
Un Passeggero dovrebbe essere in grado di accedere a MeterReading (e non a Motore e Chilometraggio)
Quale potrebbe essere il modo migliore per implementare questo .. (senza basare l'intera logica su if else statements)?
Qualche idea ragazzi?
Grazie.
Ovviamente si deve sottolineare che questo solo protegge da incidenti durante la codifica, ma non è una misura di sicurezza contro client ostili perché il codice client può ancora trasmettere un'istanza di 'IUsableByPassenger' a' Car' e quindi a 'IUsableByMechanic' e tutti gli altri. – Timwi
Certo, ma non c'è modo di evitarlo quando si espone un oggetto in qualche modo capace di fare qualcosa di più che esposto. Si può sempre usare la riflessione per trovare un tipo, leggere i dati personali ecc. – NOtherDev
@A: È possibile impedire che il codice client non fidato utilizzi il reflection, ma non per impedire il cast semplice. – Timwi