Sto usando OOP e MVVM in un'applicazione C # di WPF. L'obiettivo è che l'oggetto risultante (collegato ai dati all'interfaccia utente) rappresenti accuratamente un prodotto. Un'area specifica del prodotto è altamente configurabile. Per scopi concettuali, immagina una barca che può avere vari mezzi di propulsione. Un motore di propulsione sommerso o sopra il motore del ventilatore di acqua può essere collegato a poppa e avranno proprietà molto diverse.
A livello di modello, potrei avere una proprietà digitata per interfaccia per questo PropulsionDevice
, con l'interfaccia che definisce tutte le informazioni richieste di cui ho bisogno per fissare i prezzi e ponderare il prodotto finito. Come assegnare questa proprietà in base all'input dell'utente è dove non sono sicuro di cosa fare. Creare un'enumerazione con un elemento per ogni classe che implementa la mia interfaccia, e presentarla in un ComboBox
sembra clunky e ingenuo (la disconnessione tra l'elemento enum e la classe sembra errata). Ma non sono sicuro che la meta-programmazione con attributi personalizzati o l'uso di Reflection sarebbe un'opzione migliore. Forse c'è un'altra opzione?
Qualche suggerimento su come consentire flessibilità nelle mie classi c #, nonché su come presentare questo nell'interfaccia utente?