Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Weitere Gliederungsebene bei Enums
UNeverNo
myCSharp.de - Member

Avatar #avatar-2338.jpg


Dabei seit:
Beiträge: 154

Themenstarter:

Weitere Gliederungsebene bei Enums

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
Grumbler85
myCSharp.de - Member



Dabei seit:
Beiträge: 550
Herkunft: Rheingau Taunus

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
UNeverNo
myCSharp.de - Member

Avatar #avatar-2338.jpg


Dabei seit:
Beiträge: 154

Themenstarter:

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
DaMoe80
myCSharp.de - Member



Dabei seit:
Beiträge: 508

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers