2009-06-16 5 views
0

Ich habe den folgenden Code.Casting zu Enum

private Enum MyEnum 
{ 
    VALUE1=5, VALUE2=4, VALUE3=3, VALUE4=2, VALUE5=1 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["EnumValue"] = "VALUE1"; 
    MyEnum test = (MyEnum) Session["EnumValue"]; 
} 

auf der Seite Last, nach dem Gießen habe ich den Wert der Variablen ‚test‘ = ‚VALUE2‘.

Ich erwarte, dass es test = 'VALUE1' bekommt. Gibt es etwas falsch mit dem Code

+0

In welcher Sprache ist das? –

+0

Es ist C#/ASP.NET –

Antwort

6

Sie können nicht einfach den String-Wert zurückgeworfen in die Enum, haben Sie es analysieren:

MyEnum enumValue = (MyEnum) Enum.Parse(typeof(MyEnum), (string)Session["EnumValue"]); 
+0

ok. Der Code zeigt keinen Fehler an. Ist es das normale Verhalten? – Ashok

+1

Normalerweise würden Sie so etwas wie die Antwort von Joop tun, indem Sie den Wert der Aufzählung und nicht die Zeichenfolge verwenden. –

2

Warum sind Sie ein nicht mit dem Enum mit einem String-Arbeits ? Wie:

private Enum MyEnum 
{ 
    VALUE1=5, VALUE2=4, VALUE3=3, VALUE4=2, VALUE5=1 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["EnumValue"] = MyEnum.VALUE1; 
    MyEnum test = (MyEnum) Session["EnumValue"]; 
} 
+0

Vielleicht ist es Code von 2001 zurück, als ASP Classic 3.0 nichts anderes als Strings in der Sitzung unterstützt :-) #historylesson –

+0

Guter Kommentar zu einer Antwort vor fast zwei Jahren;) – Joop

+0

Ich denke, das macht es Meta-Geschichte? ASP Classic war meine Einführung in das kommerzielle Codieren, so dass es in mein Gedächtnis eingebrannt ist. –