C# 将接受任何 List<enum> 并返回字符串数组的方法



关于我为什么要这么做,还有一个非常长的故事,所以我相信有一个更好的整体方法。我没有时间重构整个基本结构,我想将库中的大约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。在没有通用约束的情况下定义方法实际上不会有什么坏处。在这种情况下,您可能只想更改名称,因为返回的值可能不是名称。

相关内容

  • 没有找到相关文章

最新更新