【发布时间】:2020-11-17 02:01:35
【问题描述】:
我想知道当枚举作为通用参数传入时如何列出枚举的值。下面的代码是我对此的尝试。我希望 ListReturnTypeValues 方法中的循环会循环通过值 Red、Blue、Green,但代码会失败。
public enum Colour
{
Red,
Blue,
Green
}
class Program
{
static void Main(string[] args)
{
ListReturnTypeValues(i => (Colour)i);
}
static void ListReturnTypeValues(Func<int, Enum> func)
{
foreach(var i in Enum.GetValues(func.Method.ReturnType))
{
//Cycle through Red, Blue, Green...
}
}
}
【问题讨论】:
-
让我们退后一步......你想在这里实现什么?
-
也许您正在寻找类似
static void ListReturnTypeValues<T>() where T :Enum的东西,尽管没有更详细的解释,但您的问题对我来说还不清楚 -
我刚刚删除了我的答案,因为就像@TheGeneral 提到的那样,我想知道你想做什么?如果您总是将颜色作为参数传递,那么您根本不需要枚举,只需传递颜色。你只想要名字?
-
我希望实现它能够循环遍历枚举的值,无论传入什么特定的枚举。同样应该能够传入一个返回 Animal (例如),并且仍然让它循环遍历 Animal Enum 的所有值。
-
我可能应该说得更清楚些,但之所以如此,是因为这是对我的代码库中类似案例的简化。