私は次のクラスを持っています:
public sealed class TaskType
{
private readonly String name;
private readonly int value;
public static readonly TaskType BUG = new TaskType(1, "Bug");
public static readonly TaskType ISSUE = new TaskType(2, "Issue");
public static readonly TaskType FEATURE = new TaskType(3, "Feature");
//more here
private TaskType(int value, String name)
{
this.name = name;
this.value = value;
}
public override string ToString()
{
return name;
}
}
TaskType を値からキャストするにはどうすればよいですか。
int i = 1;
String name = (TaskType)i.ToString(); // this is where i am stuck!
プロパティを反復処理するには Reflection を使用する必要があることはわかっていますが、これはうまくいきません。
たとえば、この関数を使用しようとしましたが、これは機能しません:
private TaskType getTaskType(int id)
{
PropertyInfo[] properties = typeof(TaskType).GetProperties(BindingFlags.Public | BindingFlags.Static);
foreach (PropertyInfo property in properties)
{
TaskType t = (TaskType)property.GetValue(null, null);
if (t.ToValue() == id)
return t;
}
return null;
}