enum Position
{
[Description("trainee")] Trainee,
[Description("junior")] Junior,
}
var enumTestGet = Position.Trainee;
Debug.WriteLine(enumTestGet.ToDescriptionString());
var enumTestSet = "junior".GetValueFromDescription<Position>();
Debug.WriteLine(enumTestSet.ToString());
public static class MyEnumExtensions
{
public static string ToDescriptionString(this Enum val)
{
var attributes = (DescriptionAttribute[])val
.GetType()
.GetField(val.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : string.Empty;
}
public static T GetValueFromDescription<T>(this string description)
{
foreach (var field in typeof(T).GetFields())
{
if (Attribute.GetCustomAttribute(field,
typeof(DescriptionAttribute)) is DescriptionAttribute attribute)
{
if (attribute.Description == description)
return (T)field.GetValue(null);
}
else
{
if (field.Name == description)
return (T)field.GetValue(null);
}
}
return default(T);
}
}
switch(positionInput)
{
case "trainee":
position = Position.Trainee;
break;
case "junior":
position = Position.Junior;
break;
case "middle":
position = Position.Middle;
break;
case "senior":
position = Position.Senior;
break;
default:
Console.WriteLine("Position not found");
positionApply = false;
break;
}
тогда будет два похожих объекта..
Или не так понимаю?