Eines meiner Projekte hat einen Werttyp/struct, der eine benutzerdefinierte ID-Zeichenfolge für ein Videoformat darstellt. In diesem Fall enthält es eine Zeichenfolge vom Inhaltstyp, die jedoch variieren kann.Benutzerdefinierte Struktur/Typ, der mit switch() verwendet werden kann
Ich habe eine Struktur verwendet, so dass es stark sein kann, wenn es herumgereicht wird, und führen Sie einige Plausibilitätsprüfungen für den ursprünglichen Zeichenfolgenwert durch. Der tatsächliche Zeichenfolgenwert kann alles sein und wird von externen Plugins-Bibliotheken bereitgestellt, so dass eine numerische enum
nicht zutrifft.
Da es ein paar sehr häufige Formate gibt, habe ich diese als statische schreibgeschützte Felder mit Standardwerten verfügbar gemacht.
public static readonly VideoFormat Unknown = new VideoFormat(string.Empty);
public static readonly VideoFormat JPEG = new VideoFormat("image/jpeg");
public static readonly VideoFormat H264 = new VideoFormat("video/h264");
Dies scheint in den meisten Fällen mit Ausnahme eines Schalterblocks zu funktionieren, in dem angegeben wird, dass der Wert eine Konstante sein muss. Gibt es irgendeine Möglichkeit, diesen Typ und die statischen Werte direkt in einem Schaltblock zu verwenden, ohne das interne Element oder den .ToString()
Override einzuschalten?
Gibt es eine bessere Gesamtmethode, um dies zu tun, ohne eine Entwurfszeit enum
mit numerischen Werten oder einfachen String-Konstanten zu verwenden?
Warum nicht sonst if-Anweisung anstelle einer switch-Anweisung? – Nathan
@Nathan 'if ... else' ist eine Option, aber ich habe in der Vergangenheit' switch' bevorzugt, wo die Bedingungen mehrere sind und "fixed" – Deanna
Ich habe das Bit entfernt nach der besten Methode gefragt, um gemeinsame Werte zu veröffentlichen und verschoben es zu [dieser Frage] (http://stackoverflow.com/q/15489000/588306). – Deanna