別のオブジェクトに保持されている文字列値を調べて、カスタム オブジェクトにカスタム列挙型プロパティを設定しようとしていますが、「式を介して型を参照できません」というエラーが表示され続けます。
これまで私は試しました
rec.Course = (CourseEnum)Enum.Parse(typeof(CourseEnum), rr.course);
ここで、rec.Course は CourseEnum Enumeration のメンバーを必要とし、rr.course は文字列です。
また、値がチェックされるswitchステートメントを実行しようとしましたがrr.course
(特定の値しかありません)、同じ結果が得られます
列挙型は次のように定義されます。
public enum CourseEnum
{
[StringValue("Starters")]
Starters,
[StringValue("Main Course")]
MainCourse,
[StringValue("Desserts")]
Desserts
};
public class StringValue : System.Attribute
{
private string _value;
public StringValue(string value)
{
_value = value;
}
public string Value
{
get { return _value; }
}
}
public static class StringEnum
{
public static string GetStringValue(Enum value)
{
string output = null;
Type type = value.GetType();
//Check first in our cached results...
//Look for our 'StringValueAttribute'
//in the field's custom attributes
FieldInfo fi = type.GetRuntimeField(value.ToString());
StringValue[] attrs =
fi.GetCustomAttributes(typeof(StringValue),
false) as StringValue[];
if (attrs.Length > 0)
{
output = attrs[0].Value;
}
return output;
}
}