Мне нужно создать экземпляр класса Enum, у которого нет значения 0.
Предположим, что перечисление выглядит так:
public enum ScheduleStateEnum
{
Draft = 1,
Published = 2,
Archived = 3
}
youможно создать экземпляр следующим образом:
ScheduleStateEnum myState = 0;
Если вы не можете объявить переменную типа и вам нужен доступ к типу в виде строки (как в вашем примере), используйте Activator.CreateInstance
:
var myState = Activator.CreateInstance(Type.GetType(
"Edu3.DTOModel.Schedule.ScheduleStateEnum"));
Конечно, обе эти опции дадут вам экземпляр, который на самом деле имеет целочисленное значение 0
, даже если перечисление не объявляет его.Если вы хотите использовать по умолчанию одно из объявленных вами значений, вам нужно использовать Reflection, чтобы найти его, например:
var myState = Type.GetType("Edu3.DTOModel.Schedule.ScheduleStateEnum")
.GetFields(BindingFlags.Static | BindingFlags.Public)
.First()
.GetValue(null);
Это приведет к сбою для перечислений, у которых вообще не определены значения.Используйте FirstOrDefault
и отметьте null
, если хотите предотвратить это.