-1

100人FaultType enum以上のメンバーがいます。

public enum FaultType
{
    FaultType1,
    FaultType2,
    FaultType3,
    FaultType4,
    FaultType5,
}

そして、私はにFaultTypeConstants class対応していFaultTypeます。

public class FaultTypeConstants
{
    public const int FaultType1 = 600;
    public const int FaultType2 = 100;
    public const int FaultType3 = 453;
    public const int FaultType4 = 200;
    public const int FaultType5 = 300;
}

私は試した..

    public static List<FaultType> GetFaults(List<int> FaultConstants)
    {
        var faults = new List<FaultType>();
        FaultConstants.ForEach(fc => {
            switch (fc)
            {
                case FaultTypeConstants.FaultType1:
                    faults.Add(FaultType.FaultType1);
                    break;
                case FaultTypeConstants.FaultType2:
                    faults.Add(FaultType.FaultType2);
                    break;
                case FaultTypeConstants.FaultType3:
                    faults.Add(FaultType.FaultType3);
                    break;
                case FaultTypeConstants.FaultType4:
                    faults.Add(FaultType.FaultType4);
                    break;
                case FaultTypeConstants.FaultType5:
                    faults.Add(FaultType.FaultType5);
                    break;
                default:
                    break;
            }
        });

        return faults;
    }

さて、どのようにList<FaultType>基づいてFaultTypeConstants値を入力できますか?

4

3 に答える 3

-1

私は解決策を得ました。

public static List<FaultType> GetFaults(List<int> FaultConstants)
{
    return typeof(FaultTypeConstants)
        .GetFields(BindingFlags.Public | BindingFlags.Static)
        .Where(fi => FaultConstants.Contains(Convert.ToInt32(fi.GetValue(null))))
        .Select(fi => (FaultType)Enum.Parse(typeof(FaultType), fi.Name)).ToList();
    }
于 2013-10-06T02:21:25.677 に答える