Consentire enum per esprimere una combinazione valida di valori

2

Supponiamo che in un ambiente di produzione ci siano determinati materiali disponibili per l'uso in un prodotto. Ad esempio, ci sono solo alcune dimensioni diverse di tubo di rame, ognuna con una specifica combinazione di spessore e diametro. Ai fini del codice pulito e minimale, nonché della capacità di controllare le opzioni disponibili, è un enum una buona misura per questa combinazione di dati? Stavo pensando di creare un enum con un membro per ogni articolo in stock valido (che rappresenta metallo, misurazioni fisiche, ecc.) E quindi fornire metodi di estensione su enum per restituire i dettagli menzionati.

Le scorte disponibili per l'uso possono cambiare nel tempo, quindi forse un enum non è la migliore risposta. Esiste un modo migliore per esprimere la combinazione valida dei valori correlati? Sto usando c #.

    
posta Ethan 30.01.2014 - 15:56
fonte

2 risposte

4

Probabilmente creerò solo una classe TubeParameterCombination con proprietà di sola lettura Thickness e Diameter , e fornirò una matrice o un elenco come

List<TubeParameterCombination> validCombinations;

da qualche parte nel codice. Se vuoi essere assolutamente sicuro che nessuno cambierà la lista dopo averla inizializzata, incapsulala dietro una specie di classe ValidCombinationProvider che consente solo l'accesso in sola lettura. Quello che devi decidere è dove e quando inizializzi quella lista.

È possibile eseguire l'hardcode dell'inizializzazione nel programma (il che significa che è necessario modificare il programma ogni volta che cambiano le combinazioni valide), leggere le combinazioni da un file di testo (che potrebbe essere modificato da un utente o da un amministratore), forse solo una volta quando inizia il tuo programma. Oppure leggi le combinazioni valide da un database (che ha senso quando il tuo programma sta già utilizzando un database per questo tipo di dati e vuoi fornire una possibilità per le modifiche controllate a quell'elenco). Scegli quello più adatto alle tue esigenze.

    
risposta data 30.01.2014 - 16:57
fonte
0

Enum in C # è inteso come elenco di elementi abbastanza statici per discriminare qualcosa. Se c'è una possibilità che questo elenco di voci cambi, specialmente nella produzione, non è appropriato utilizzarlo. Se vuoi un comportamento specifico, devi codificarlo da solo. Non dovrebbe essere difficile codificare una classe o una gerarchia di classi che esprimono ciò che ti serve.

    
risposta data 30.01.2014 - 16:58
fonte

Leggi altre domande sui tag