Eintrag aus Enum auf ein Variable schreiben


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

CopWorker

Mitglied
Hallo zusammen,

ich will in einem Enum nach einem bestimmten Eintrag suchen.
Wenn dieser im Enum enthalten ist dann wird dieser auf eine Variable vom Typ des Enum geschrieben werden.

Hier mein Quellcode.

C#:
//Hier die Aufzählung
public enum RpcProtseq
  {
    entry_empty,
    ncacn_nb_tcp,
    ncacn_nb_ipx,
    ncacn_nb_nb,
    ncacn_ip_tcp,
    ncacn_np,
    ncacn_spx,
    ncacn_dnet_nsp,
    ncacn_at_dsp,
    ncacn_vns_spp,
    ncadg_ip_udp,
    ncadg_ipx,
    ncadg_mq,
    ncacn_http,
    ncalrpc,
  }
 
//Eine Variable vom Enum Typ mit Initialisierung
RpcProtseq protseq = RpcProtseq.entry_empty;

//Hier die Variable die den Wortlaut enthält nach dem gesucht wird
string strProtocol = "ncacn_ip_tcp";

foreach (string seq in Enum.GetNames(typeof(RpcProtseq)))
{
    if (seq.Equals(strProtocol))
    {
        BFound = true;
        protseq = Enum.Parse(typeof(RpcProtseq), seq);
    }
}

//Eintrag gefunden? Dann Variable der Funktion übergeben und Funktion aufrufen
if(BFound)
    server.AddProtocol(protseq, strServerEndPoint, iMaxProdCalls)

ln der Zeile 32 "protseq = Enum.Parse(typeof(RpcProtseq), seq);" tritt der Fehler auf.
Fehler CS0266 Der Typ "object" kann nicht implizit in "RpcProtseq" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden (möglicherweise fehlt eine Umwandlung).
Die "Enum.Parse( )" Funktion verlangt aber nach einem Parameter 1 (enumType) und Parameter 2 (string).


Auf folgender Web-Seite ist das ganz genau so erklärt. Mit Beispiel:


Vielen Dank für jede Hilfe
Grüße von CopWorker
 

maendler53

Grünschnabel
Moin CopWorker

Enum.Parse(typeof(RpcProtseq), seq); ist ein Objekt.
Das muss geparst werden.

Code:
protseq = (RpcProtseq)Enum.Parse(typeof(RpcProtseq), seq);

Gruss Mändler
 

CopWorker

Mitglied
Hallo maendler53,

so habe ich das dann gemacht.
Steht aber das passende Suchargument ((string)seq) nicht zur Verfügung
wirft der Debugger eine Exception.
Geht auch, das fange ich mit ´ner try-catch Anweisung ab.

Vielen Dank noch für deine Hilfe.
Grüße von CopWorker
 

Spyke

Premium-User
zum prüfen ob ein Enum ein Feldwert oder Namen hat gibt es Enum.IsDefined
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…