我一直在尝试创建一个扩展方法,它可以在任何枚举上工作,以返回它的值.
而不是这样做:
Enum.GetValues(typeof(BiasCode)).Cast<BiasCode>()
Run Code Online (Sandbox Code Playgroud)
这样做会很好:
new BiasCode().Values()
Run Code Online (Sandbox Code Playgroud)
如果没有新的话会更好,但这是另一个问题.
我有一个.NET小提琴,它有一个接近的解决方案(代码如下所示).此代码的问题是扩展方法正在返回List<int>.我想让它返回枚举值本身的列表.回归List<int>并不可怕; 这只是意味着我必须施展结果.
甚至可以这样做吗?我尝试使扩展方法通用,但遇到了问题.这与我能够得到的一样接近:
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
foreach (int biasCode in new BiasCode().Values())
{
DisplayEnum((BiasCode)biasCode);
}
}
public static void DisplayEnum(BiasCode biasCode)
{
Console.WriteLine(biasCode);
}
}
public enum BiasCode
{
Unknown,
OC,
MPP
}
public static class EnumExtensions
{
public static List<int> Values(this Enum theEnum)
{
var enumValues = new List<int>();
foreach (int enumValue …Run Code Online (Sandbox Code Playgroud)