如何从属性返回枚举

时间:2015-11-19 14:05:53

标签: c# oop properties enums

有没有办法如何通过属性返回完整的枚举?以下是我想要做的例子:

// MyEnums.cs
public enum Languages
{
    cs = 0,
    pl = 1,
    en = 2,
    de = 3,
}

// General.cs
public static MyEnums.Languages Languages
{
    get
    {
        return MyEnums.Languages;
    }
}

3 个答案:

答案 0 :(得分:2)

enum是一种类型,我想你实际上想要得到所有枚举值。你可以使用这个包装器:

public static class EnumWrapper<T> where T : struct
{
    public static T[] Values
    {
        get
        {
            Type ofT = typeof(T);
            if (!ofT.IsEnum) throw new ArgumentException("Must be enum type");
            return Enum.GetValues(ofT).Cast<T>().ToArray();
        }
    }
}

// ...

Languages[] languages = EnumWrapper<Languages>.Values;

答案 1 :(得分:0)

如果要返回枚举中定义的所有可用值,可以使用

Enum.GetValues(typeof(MyEnums.Languages));

并修改您的方法,以便返回MyEnums.Languages[](或List<MyEnums.Languages>,这对于调用代码来说总是更容易管理)

答案 2 :(得分:0)

要获取枚举中的所有值,请使用Enum.GetValues。您可能还想将其强制转换为正确的类型:

Languages[] languages = Enum.GetValues(typeof(Languages)).Cast<Languages>().ToArray();
// languages is an array containing { Languages.cs, Languages.pl, Languages.en, Languages.de }