对未传递给方法的所有枚举值执行操作

时间:2014-05-02 00:50:23

标签: c# enums compare coded-ui-tests

我有5个标签为ABCDE的复选框,我已创建enum对于。默认情况下会检查它们。我想通过一个方法,我想要留下的枚举,并取消选中所有其余的。你会如何最有效地做到这一点,这就是我所得到的,任何想法?

所以在下面的示例中,如果我将Type.A传递给CheckType,我预计最后仍会检查CheckboxA

public enum Type
{
    A,
    B,        
    C,
    D,
    E
}

public class SelectorPage
{
    public void CheckType(Type type)
    {
        if (type != Type.A)
        {
            if (ACheckBox.Exists)
            {
                CheckA(false);
            }
        }

        if (type != Type.B)
        {
            if (BCheckBox.Exists)
            {
                CheckB(false);
            }
        }

        if (type != Type.C)
        {
            if (CCheckBox.Exists)
            {
                CheckC(false);
            }
        }

        if (type != Type.D)
        {
            if (DCheckBox.Exists)
            {
                CheckD(false);
            }
        }

        if (type != Type.E)
        {
            if (ECheckBox.Exists)
            {
                CheckE(false);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我认为以下内容非常自我解释:)

public class SelectorPage
{
    public void CheckType(Type type)
    {
        if (ACheckBox.Exists)
            CheckA(type == Type.A);

        if (BCheckBox.Exists)
            CheckB(type == Type.B);

        if (CCheckBox.Exists)
            CheckC(type == Type.C);

        if (DCheckBox.Exists)
            CheckD(type == Type.D);

        if (ECheckBox.Exists)
            CheckE(type == Type.E);
    }
}

答案 1 :(得分:0)

试试这个:

public void CheckType(Type type)
{
    Dictionary<Type, CheckBox> map = new Dictionary<Type, CheckBox>
    {
        { ACheckBox, Type.A }, 
        { BCheckBox, Type.B },
        { CCheckBox, Type.C },
        { DCheckBox, Type.D },
        { ECheckBox, Type.E },
    }

    foreach(var pair in map)
    {
        CheckBox checkBox = pair.Key;
        Type checkBoxType = pair.Value;
        if(checkBox.Exists)
        {
            bool shouldBeChecked = checkBoxType == type;
            checkBox.Check(shouldBeChecked);
        }   
    }
}