Laden...

Weitere Gliederungsebene bei Enums

Erstellt von UNeverNo vor 12 Jahren Letzter Beitrag vor 12 Jahren 717 Views
UNeverNo Themenstarter:in
153 Beiträge seit 2007
vor 12 Jahren
Weitere Gliederungsebene bei Enums

Bin grad dabei ein Enum zu definieren, das man sehr schön in verschiedene Untergruppen verpacken könnte (MIME-Typen: App, Audio, Image, etc.).

Allerdings frage ich mich, wie ich das am komfortabelsten für den verwendenden Entwickler einsetze.
Mit Bordmitteln vom Standard-Enum scheint es nicht zu gehen.

Ich könnte statische Konstanten verwenden, allerdings habe ich dann das Problem, dass keine Intellisense-Unterstützung angeboten wird, wenn er die Methode mit Übergabeparametern befüllt, da ja eine wie auch immer geartete Konstante erwartet wird und kein Enumwert einer Aufzählung.

Grüße,
Chris

"Wenn Architekten genauso bauen würden, wie Programmierer programmieren, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören." (Steven Weinberg)

G
538 Beiträge seit 2008
vor 12 Jahren

Ein Einzelnes Enum wird deine Anforderung nicht erfüllen können, aber du kannst ein Enum definieren und anschließen (statische) Zugriffsklassen/Properties definieren, wie zum Beispiel:


namespace MimeType {
  enum MimeTypes {
    // ...
  }

  public static class Audio {
    public static MimeTypes MPEG { get { return MimeTypes.AudioMPEG; } }
    public static MimeTypes WAV { get { return MimeTypes.AudioWAV; } }
  }
}

Das bringt aber halt keinerlei Vorteil ...

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

UNeverNo Themenstarter:in
153 Beiträge seit 2007
vor 12 Jahren

Ja, das hilft mir leider nicht, da die Intellisense dann eben trotzdem auf MimeType.MimeTypes zugreift und nicht auf MimeType.Audio.

Grüße,
Chris

"Wenn Architekten genauso bauen würden, wie Programmierer programmieren, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören." (Steven Weinberg)

D
500 Beiträge seit 2007
vor 12 Jahren

Moin!

Dann nimm doch fuer den Einstiegspunkt nicht Enum, sondern eine Klasse, also in etwas so:



public static class MimeTypes
{
  public static Audio Audio { get {...} }
  public static Image Image { get {...} }
}

public static class Audio 
{
     public static AllMimeTypes MPEG { get { return AllMimeTypes .AudioMPEG; } }
     public static AllMimeTypes WAV { get { return AllMimeTypes .AudioWAV; } }
}
 
public enum AllMimeTypes 
{
   // ...
}
 


Oder Du trennst Dein eigentliches MimeType Enum auf, aber das willst Du sicherlich nicht. Dann besteht natuerlich noch die Moeglichkeit, die MimeType durch Klassen/Structs und Interfaces darzustellen.

Gruss,
Moe