【发布时间】:2019-06-10 09:28:39
【问题描述】:
我有许多列表要存储为静态数据,因此它们被明确命名。
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;
}
我已经查看了这个帖子,但没有成功:
任何建议表示赞赏。
【问题讨论】:
-
枚举本质上是整数(它们基本上是分配了整数值的标签)。
-
任何你不能 .ToString() 他们并打开字符串值的原因(我假设你想打开一个通用枚举,因为你有多个枚举,具有相同的名称或名称在他们中间重复?)
-
如果您能提供minimal reproducible example,那就太好了。
-
在
static字段中存储这样的内容通常是个坏主意。你为什么要这样做?
标签: c# enums switch-statement