在C#中实现此流程的最佳方式

时间:2012-01-27 18:14:32

标签: c# coding-style

我需要制作一个包含22张主图像和13张次要图像的应用程序。

流程描述:我看到image1,有一个带有两个选项的清单(这些是条件)。如果选中条件1则转到图像23,然后如果选中选项2转到图像24然后转到图像2,如果未检查则转到图像2。

这是一个举例说明的流程:

a flowchart

在某些情况下可能有两个条件或三个甚至只有一个条件。

我需要在C#中执行此操作。我怎样才能在图像之间跳转? 35个面板玩Visible选项? MultiViews?还有其他控制吗? 如果没有这么多ifs elses,有没有更好的方法呢?请给我一些指导..

4 个答案:

答案 0 :(得分:2)

nope只需使用if / else if / else或case语句......

我个人认为没有一种“完美”的方式来实现这样的事情。

答案 1 :(得分:1)

你应该了解有限状态机;一旦掌握了理论,你就可以轻松地推出自己的状态机。

您可以将状态之间的转换存储在文件中,以便最大程度地方便配置。

答案 2 :(得分:0)

我不知道这是否有帮助,但似乎Image3或Image4的“空”条件等同于非空条件true

这意味着您在条件和值之间存在映射。您可以使用它将这部分代码提取到一个方法,该方法将条件(或仅true作为空条件)和图像名称,并在满足条件时使用名称执行某些操作。

答案 3 :(得分:0)

您需要阅读设计模式。而不是4"我推荐Eric Freeman和Elisabeth Freeman撰写的非常出色的书Head First Design Patterns

Head First Design Patterns Cover

您感兴趣的特定模式是State Pattern。这是一个类图

State Pattern Class Diagram

简而言之,您有一个上下文可以做一些有用的事情。它的外部接口完全取决于您的需求。每个上下文实例都有许多不同的内部状态。将其编码为一堆嵌套的if / then / else / switch / lookup等会变得复杂并使维护和调试变得困难。所以......

您可以创建一个表示上下文状态的抽象类型。该抽象 state 类的每个具体子类型都是不同的状态,并实现该状态所需的行为。

您的上下文有一个内部成员引用其当前状态,并以初始状态初始化。

具体_state实例的职责之一是为上下文提供下一个状态,它应根据所采取的操作进行转换。

通常情况下,没有自己的任何成员,保存对上下文的引用。它只是提供行为。如果它可以访问上下文的内部,那么它会有所帮助,但是你选择这样做。

状态模式与Strategy Pattern类似(但不同)。

这里有一些链接可以帮助您入门。