Oprogramowanie, które będę budował, będzie wymagało "przełączania" aplikacji pomiędzy różnymi statusami. Niektóre zadania można wykonać zależnie od statusu, w jakim znajduje się aplikacja. Myślałem o użyciu enum jako statusStół Enum vs Lookup vs Enum Reflection vs State State
public class Application
{
public int Id {get;set;}
public Status {get;set;}
}
public enum Status
{
[Description("New")]New = 1, [Description("Closed")]Closed = 2
}
Ale potem pomyślałem, że może dobrze jest używać tabeli odnośników w bazie danych jako stan jest aktualizowany/re-uporządkowane dość często
table status (id int pk, desc string, sort_order int)
table application (id int pk, status_id int fk)
w moim sprawa Muszę zrobić rzeczy takie jak
if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }
Myślę, że powyższy przypadek jest łatwiejszy do zrobienia z enum. Jednak jeśli chodzi o aktualizację porządku sortowania statusu lub opisu, będzie to dość trudne.
Czy należy używać odbicia, aby dynamicznie tworzyć wyliczenia na podstawie wartości z tabeli odnośników? Czy powinienem użyć wzoru stanu? Problem, który widzę z relacją enum to wpływ na wydajność. Wzorzec stanu może generować dużo zbędnego kodu.
Co myślisz? Z góry dziękuję!
jak u obsłużyć pobieraniu z db i oddanych do obiektu bit bez instrukcji else, o czym wspomniałem w odpowiedzi 3? – Jeff
Myślę, że trudno mi zrozumieć problem. Każdy z obiektów Status może zawierać dowolny kod, w tym trudne do obsadzenia rzutki, jeśli jest to konieczne. Obiekt aplikacji może pozostać taki sam; rozsyła połączenia różniące się od statusu wewnętrznego. –
moimi problemami jest to, jak uniknąć ręcznego pisania instrukcji else, gdy tabela danych odsyłających z powrotem do obiektu w poprawnym stanie, w twoim przykładzie, w jaki sposób przesyłasz wiersz danych z powrotem do StatusZero lub StatusOne bez tego, czy w innych statystykach? – Jeff