Eintrag aus Enum auf ein Variable schreiben

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

CopWorker

Erfahrenes 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:
https://www.dotnetperls.com/enum-parse

Vielen Dank für jede Hilfe
Grüße von CopWorker
 
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
 
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
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück