El software que construiré implicará un cambio de "aplicación" entre diferentes estados. Ciertas tareas pueden hacerse dependiendo del estado en que se encuentre una aplicación. Estaba pensando acerca del uso de enumeración como el estadoEnum vs Lookup table 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
}
Pero luego pensé que tal vez es bueno utilizar la tabla de consulta en la base de datos de estado no se actualiza/re-ordenado con bastante frecuencia
table status (id int pk, desc string, sort_order int)
table application (id int pk, status_id int fk)
En mi caso de que necesite hacer cosas como
if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }
creo que el caso anterior es más fácil que ver con la enumeración. Sin embargo, cuando se trata de actualizar el orden de clasificación del estado o la descripción, será bastante difícil.
¿Debo usar la reflexión para crear dinámicamente enumeración basada en los valores de la tabla de búsqueda? ¿O debería usar el patrón de estado? El problema que veo con la rectificación de enum es el impacto en el rendimiento. Y el patrón de estado puede producir una gran cantidad de código redundante.
¿Qué opinas? ¡Gracias por adelantado!
u ¿cómo manejar la recuperación de db y el reparto de objetos poco sin declaración if else como mencioné en la respuesta 3? – Jeff
Supongo que me cuesta entender el problema. Cada uno de los objetos de estado puede contener cualquier código que desee, incluidos moldes cableados si es necesario. El objeto Aplicación puede permanecer igual; distribuye las llamadas que difieren en el Estado interno. –
mis problemas es cómo evitar la declaración escrita a mano si al volver la tabla de datos al objeto en el estado correcto, en su ejemplo, ¿cómo se transfiere la fila de datos a StatusZero o StatusOne sin if else statment? – Jeff