Il software che verrà creato comporterà un "passaggio di applicazione" tra diversi stati. Alcune attività possono essere eseguite in base allo stato dell'applicazione. Stavo pensando di utilizzare enum come lo statoEnum vs Tabella di ricerca vs Enum reflection vs State pattern
public class Application
{
public int Id {get;set;}
public Status {get;set;}
}
public enum Status
{
[Description("New")]New = 1, [Description("Closed")]Closed = 2
}
Ma poi ho pensato che forse è bene utilizzare tabella di ricerca nel database come lo stato viene aggiornato/riordinata molto spesso
table status (id int pk, desc string, sort_order int)
table application (id int pk, status_id int fk)
Nella mia caso ho bisogno di fare le cose come
if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }
penso che il caso di cui sopra è più facile da fare con l'enum. Tuttavia, quando si tratta di aggiornare l'ordinamento o la descrizione dello stato, sarà piuttosto difficile.
Devo utilizzare la riflessione per creare dinamicamente enum in base ai valori della tabella di ricerca? O dovrei usare lo schema di stato? Il problema che vedo con enume refezione è l'impatto sulle prestazioni. E lo schema di stato può produrre molto codice ridondante.
Cosa ne pensi? Grazie in anticipo!
come si fa gestire u il recupero dal db e cast di oggetto un po 'se non altro come ho detto nella risposta 3? – Jeff
Credo di avere difficoltà a capire il problema. Ciascuno degli oggetti Status può contenere qualsiasi codice desiderato, inclusi i cast hard-switch, se necessario. L'oggetto Application può rimanere lo stesso; invia le chiamate che differiscono dallo stato interno. –
i miei problemi è come evitare di scrivere a mano se in un'altra istruzione quando si esegue il cast della tabella di dati sull'oggetto nello stato corretto, nell'esempio, come si fa a lanciare la riga di dati su StatusZero o StatusOne senza altre istruzioni? – Jeff