如何在C#中创建带有T限制为Enum的泛型方法?
大家好!我是一名初学C#的开发者,遇到了一个问题。我试图编写一个通用方法,它接受任何枚举(enum)并返回其描述或某个值。例如,我想创建一个方法,将枚举的所有值以字符串列表形式输出。
我写了类似这样的代码:
```csharp
public static string[] GetEnumNames() where T : Enum
{
return Enum.GetNames(typeof(T));
}
```
但编译器报错:“Constraint cannot be special class 'System.Enum'”。我读到过,在C#中不能直接将泛型类型限制为枚举。这是真的吗?那该怎么办?我需要这个方法只对枚举有效,而不是任何类型。我见过有人用 `where T : struct`,但那样也可以传入普通结构体,不符合要求。
请告诉我如何正确实现这样的方法?也许有什么技巧或变通方法?提前感谢!
**补充说明:** 我使用的是.NET Framework 4.7.2,但如果.NET Core/.NET有解决方案也请告知。