У меня есть несколько списков, которые я хочу сохранить как статические, поэтому они имеют явное имя.
Gender
, MaritalStatus
и ResidentalStatus
- все перечислимые типы.
static readonly Lazy<IEnumerable<EnumDto>> _gender = GetLazyOptions<Gender>();
static readonly Lazy<IEnumerable<EnumDto>> _maritalStatus = GetLazyOptions<MaritalStatus>();
static readonly Lazy<IEnumerable<EnumDto>> _residentalStatus = GetLazyOptions<ResidentialStatus>();
Мне нужно иметь доступ к соответствующему полю, используя универсальный метод - что-то вроде приведенного ниже:
public static IEnumerable<EnumDto> GetOption1<TEnum>() where TEnum : Enum
{
}
public static IEnumerable<EnumDto> GetOptions2<TEnum>(this TEnum @enum) where TEnum : Enum
{
}
Идея состоит в том, чтобы затем использовать оператор switch
, чтобы найти правильноеполе (из типа Enum), но пока я не смог заставить его работать для меня синтаксически:
switch(typeof(@enum))
{
case Gender: return _gender;
}
Я уже проверил этот поток, но безуспешно:
c # 7.0: включить System.Type
Любой совет приветствуется.