关于我为什么要这么做,还有一个非常长的故事,所以我相信有一个更好的整体方法。我没有时间重构整个基本结构,我想将库中的大约20k行最小化为一个方法。我想做的是获取任何List<Enum>
并返回一个字符串[]。我的例子如下,我确信我可能错过了某种反思。谢谢
public enum ActivityEnum
{
ID,
ACTIVITYTYPEID,
CAMPAIGNID,
BUDGETID,
LISTID
}
public enum ActivityAttributeEnum
{
ID,
ACTIVITYID,
ACTIVITYATTRIBUTE,
ENABLED,
CREATEDBY,
CREATEDDATE,
LASTUPDATEBY,
LASTUPDATEDATE
}
public string[] myStrings(List<activtyEnum> activityEnums)
{
var array = new string[activityEnums.Count];
for (int i = 0; i < activityEnums.Count; i++)
array[i] = activityEnums[i].ToString();
return array;
}
我不确定的是如何接受任何枚举。在我的示例中,我有activityEnum,但我希望该方法同时接受ActivityAttributeEnum和activityEnum。大约有600个枚举,所以一个通用的方法会很棒。
谢谢!
private string[] GetNames<TEnum>(List<TEnum> enums) where TEnum : Enum
{
return enums.Select(e => e.ToString()).ToArray();
}
您确实应该将参数声明为类型IEnumerable<TEnum>
,因为这将适用于List<T>
、数组、LINQ查询的结果以及其他各种列表类型。
请注意,任何列表也可以通过这种方式将其项转换为string
数组,因此实际上不需要将项类型约束为enum
。在没有通用约束的情况下定义方法实际上不会有什么坏处。在这种情况下,您可能只想更改名称,因为返回的值可能不是名称。