Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对未传递给方法的所有枚举值执行操作_C#_Enums_Compare_Coded Ui Tests - Fatal编程技术网

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

C# 对未传递给方法的所有枚举值执行操作,c#,enums,compare,coded-ui-tests,C#,Enums,Compare,Coded Ui Tests,我有5个标记为A、B、C、D和E的复选框,我为它们创建了一个枚举。默认情况下会选中它们。我想将一个方法传递给enum,我想保持选中状态并取消选中其余的所有方法。你将如何最有效地完成这项工作,这就是我的想法,有什么想法吗 所以在下面的例子中,如果我将Type.A传递给CheckType,我希望最后只检查CheckboxA public enum Type { A, B, C, D, E } public class SelectorPage

我有5个标记为A、B、C、D和E的复选框,我为它们创建了一个枚举。默认情况下会选中它们。我想将一个方法传递给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);
            }
        }
    }
}

我认为以下几点不言自明:

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);
    }
}
试试这个:

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);
        }   
    }
}

@Grantwiney关于环境的唯一上下文是编码的ui测试,不能保证RadioButton存在或可用。然而,如果是WinForms等,这将是一种有效的方法。是的,这是一个codedui测试,我无法控制我正在测试的ui。谢谢你的帮助,我想确保我在学习c语言的过程中尽可能高效地完成每件事。我喜欢这个比我的进步更大的进步。