Ich habe einen Int16
Wert aus der Datenbank erhalten und muss diesen in einen Aufzählungstyp konvertieren. Dies geschieht leider in einer Ebene des Codes, die nur sehr wenig über die Objekte weiß, außer was sie durch Reflexion sammeln können.
Als solches wird ein Aufruf ausgeführt, Convert.ChangeType
der mit einer ungültigen Besetzungsausnahme fehlschlägt.
Ich fand eine meiner Meinung nach stinkende Problemumgehung wie folgt:
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
Gibt es einen besseren Weg, damit ich mich nicht durch diese String-Operation bewegen muss?
Hier ist ein kurzes, aber vollständiges Programm, das verwendet werden kann, wenn jemand experimentieren muss:
using System;
public class MyClass
{
public enum DummyEnum
{
Value0,
Value1
}
public static void Main()
{
Int16 value = 1;
Type destinationType = typeof(DummyEnum);
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
Console.WriteLine("" + value + " = " + enumValue);
}
}