为什么在C#中使用If Else时会出现System.InvalidOperationExpression错误?

时间:2017-04-28 11:53:34

标签: c#

我需要检查3个布尔值:在提交时显示,可编辑和清除。有时布尔人已经被检查了,我只是希望程序让他们检查(=是)。我的代码从一开始就没有被检查时工作正常,但如果已经检查它们我会得到以下错误(System.InvalidOperationExpression)。错误发生在第一个if语句中。

这是我的代码

        Page.Control("Editable").Activate();
        if (Page.Control("Editable").Equals(false))
            TestScenario.SaveValueWithDelay(Page.Control("Editable"), true);

        Page.Control("Show").Activate();
        if (Page.Control("Show").Equals(false))
            TestScenario.SaveValueWithDelay(Page.Control("Show"), true);

        Page.Control("Clear on Submit").Activate();
        if (Page.Control("Clear on Submit").Equals(false))
            TestScenario.SaveValueWithDelay(Page.Control("Clear on Submit"), true);

1 个答案:

答案 0 :(得分:0)

事实证明,我在单元测试中的一个步骤是覆盖我设置的值,这使我难以调试。所以最好的方法是完全删除If条件语句并创建一个清理例程(即禁用接口),在每次运行后清除布尔值。这是最终的代码:

public class Interfaces

{
    internal static void EnableInterfaces(UserContext userContext,  ClientLogicalForm Page)

    {
        Page.Activate();

        Page.Control("Editable").Activate();
        Page.Control("Editable").SaveValue(true);

        Page.Control("Show").Activate();
        Page.Control("Show").SaveValue(true);

        Page.Control("Clear on Submit").Activate();
        Page.Control("Clear on Submit").SaveValue(true);


    }

    internal static void DisableInterfaces(UserContext userContext, ClientLogicalForm Page)

    {
        Page.Activate();

        Page.Control("Editable").Activate();
        Page.Control("Editable").SaveValue(false);

        Page.Control("Show").Activate();
        Page.Control("Show").SaveValue(false);

    }

}