Enum Wert hinzufügen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Enum Wert hinzufügen

    Moin,

    ist es möglich und wenn ja wie, einem Enum aus einer DLL einen Wert hinzuzufügen, so dass ich diesen in meinem Code zusätzlich abrufen kann?

    Als Beispiel

    VB.NET-Quellcode

    1. Public Enum Protocol
    2. None = 0
    3. Ftp
    4. Sftp
    5. Http
    6. Https
    7. Scp
    8. WebDAV
    9. WebDAVs
    10. End Enum


    wäre mein Enum in der externen DLL.

    In einigen Programmen, in denen ich meine DLL eingebunden habe, benötige ich manchmal noch zusätzliche Werte in diesem Enum, die allerdings nur in diesem Programm benötigt werden.

    In Klassen würde ich dies über Implements oder Partial lösen, was bei Enums aber nicht funktioniert.

    Grüße :)
    Du könntest in Deinem spezifischen Projekt das Enum einfach neu definieren.
    Eines der Probleme: Wenn Du Daten mit dem erweiterten Enum-Wert speicherst und ein anderes Programm lädt die Daten, was soll dann das Programm mit dem Enum-Int-Wert 8 anfangen, wenn es in dem Basis-Enum nur bis 7 (WebDAVs) geht?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @BlueLagoonX Intern werden Enums tatsächlich nur als Integer-Wert (bzw. der gegebene ganzzahlige Typ halt) behandelt, sein Name, kommt nur bei String-Opeerationen zum Tragen (z.B. beim Befüllen einer ComboBox).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VB1963 Dachte ich mir schon, den Beitrag hatte ich auch gefunden
    @VaporiZed Ein neues Enum pro Programm, welches dann die Werte aus dem Enum aus der DLL enthält habe ich bisher.

    Habe ich dann bisher so gemacht

    VB.NET-Quellcode

    1. Public Enum ProtocolMeinProgramm
    2. None = Protocol.None
    3. Ftp = Protocol.Ftp
    4. Sftp = Protocol.Sftp
    5. Http = Protocol.Http
    6. Https = Protocol.Https
    7. Scp = Protocol.Scp
    8. WebDAV = Protocol.WebDAV
    9. WebDAVs = Protocol.WebDAVs
    10. Ssh
    11. DriveServer
    12. WasAuchImmer
    13. End Enum


    Funktioniert soweit auch, allerdings muss ich bei Änderungen im ursprünglichen Enum die Änderungen auch im Programm durchführen. Nicht schön, aber wenns nicht anders geht, bleib ich dabei.

    @RodFromGermany ist mit bekannt. Hier mal ein Beispiel wie ich es angedacht hätte, was aber natürlich nicht funktioniert.

    VB.NET-Quellcode

    1. Partial Public Enum Protocol
    2. Ssh
    3. DriveServer
    4. WasAuchImmer
    5. End Enum


    VB.NET-Quellcode

    1. Public Enum Protocol :Inherits Protocol
    2. Ssh
    3. DriveServer
    4. WasAuchImmer
    5. End Enum

    BlueLagoonX schrieb:

    allerdings muss ich bei Änderungen im ursprünglichen Enum die Änderungen auch im Programm durchführen
    8| Wie oft machst Du sowas? Das sollte eigentlich nahezu gar nicht passieren. Ansonsten wäre ein Enum m.E. gar nicht sinnvoll.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    BlueLagoonX schrieb:

    Public Enum Protocol :Inherits Protocol
    So was geht nicht.
    Dann mach Dir ein völlig neues Enum, wo Du das alte abschreibst und die neuen Items einfügst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    So was geht nicht.

    BlueLagoonX schrieb:

    Hier mal ein Beispiel wie ich es angedacht hätte, was aber natürlich nicht funktioniert.

    RodFromGermany schrieb:

    Dann mach Dir ein völlig neues Enum, wo Du das alte abschreibst und die neuen Items einfügst.

    BlueLagoonX schrieb:

    Ein neues Enum pro Programm, welches dann die Werte aus dem Enum aus der DLL enthält habe ich bisher.
    Habe ich dann bisher so gemacht
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.