Announcement

Collapse
No announcement yet.

Wertebereich abhängig von Wert anderer Variabler - wo beginnen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wertebereich abhängig von Wert anderer Variabler - wo beginnen?

    Hallo Experten,

    meine Applikation benutzt einige Enumerationen. Das im folgenden beschriebene Problem trifft aber in gleicher Weise auf ganz- und auch gebrochenzahlige Datentypen zu.

    Jede Eigenschaft hat einen gültigen Wertebereich. Ich soll nun den Wertebereich einiger Datentypen zur Laufzeit ändern, abhängig davon, welchen Wert eine andere Variable annimmt. Ein Beispiel:[highlight=c#]public enum BaseColor{ invalid, red, yellow, green, cyan, blue, magenta};
    public enum ColorSelection{ all, rgb, cmy};

    private BaseColor someColor = BaseColor.red;
    private ColorSelection colorSelection = ColorSelection.all;[/highlight]Sollte nun colorSelection den Wert ColorSelection.rgb annehmen, dann sind für someColor nur noch die Werte red, green und blue gültig.
    Sollte dagegen colorSelection auf ColorSelection.cmy gesetzt werden, dann sollte someColor nurmehr die Werte cyan, magenta und yellow zulassen.

    Für eine begrenzte Anzahl von Werten, Typen und Abhängigkeiten kann man das von Hand codieren. Ich aber soll einen Mechanismus erfinden, der offen ist für spätere Änderungen. Am besten, man muss nur eine ini-Datei tauschen und beim nächsten Start der Applikation gelten die neuen Regeln. Ich weiß im Moment nicht, wie ich das angehen soll.

    Gibt es bereits eine Lösung für ein ähnliches Problem?

    Vielen Dank im Voraus,


    luker

  • #2
    Ich aber soll einen Mechanismus erfinden, der offen ist für spätere Änderungen
    Welche Änderungen? In welcher Form? Ohne eine gewisse Vorstellung kann man bei solchen ~offenen~ Anforderung nur auf YAGNI verweisen.

    Aber zum eigentlichen Problem ...

    Wie sich Enums verhalten wird zur Compile Zeit festgelegt. Die Auswertung eine Konfiguration zur Laufzeit kommt also immer zu spät. Damit sind Enums für dynamisches Verhalten denkbar ungeeignet. Wenn du dynamisches Verhalten brauchst von einem Ding das so aussieht wie ein Enum fällt mir nur ein eine Klasse zu schreiben die von der Oberfläche aussieht wie ein Enum. Im Framework macht das zum Beispiel die System.Text.Encoding (Ja Encoding ist kein Enum!) Klasse. Guckt dir die am besten mal in einem Disassembler an (z.B. Reflector) ob dir das in der Form helfen würde.

    Comment

    Working...
    X