Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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#_.net_Oop - Fatal编程技术网

C# 如何在对象中实现工作流

C# 如何在对象中实现工作流,c#,.net,oop,C#,.net,Oop,我有一个对象,它表示存储在关系数据库中的某个文档(O/R映射)。此文档有一个状态字段,用于标识其状态。每个状态(即输入、等待批准、发送、支付等)都有自己的验证规则和要求 我想知道这种工作流的正确OO实现是什么。最简单的方法是放置一组if语句,如 如果(状态==某物| |状态==其他某物) 检查日期是否可以更改() 但在一个复杂的场景中,这变得非常难以理解 关于良好设计的建议?请查看。对于每个可能的状态,您将创建一个实现要执行的步骤的类 也许你想把它和一个工厂结合起来,这个工厂根据从数据库读取数据

我有一个对象,它表示存储在关系数据库中的某个文档(O/R映射)。此文档有一个状态字段,用于标识其状态。每个状态(即输入、等待批准、发送、支付等)都有自己的验证规则和要求

我想知道这种工作流的正确OO实现是什么。最简单的方法是放置一组if语句,如

如果(状态==某物| |状态==其他某物) 检查日期是否可以更改()

但在一个复杂的场景中,这变得非常难以理解

关于良好设计的建议?

请查看。对于每个可能的状态,您将创建一个实现要执行的步骤的类


也许你想把它和一个工厂结合起来,这个工厂根据从数据库读取数据时数据的状态来构建正确的策略对象。

我想你需要回顾一下。它是.NET的一部分,它使您能够相对轻松地创建工作流。

您的文档的wf或生命周期不应仅存在于UI级别以启用/禁用某些按钮,还应在业务逻辑级别了解它,以便逻辑能够正确反应并触发某些操作。我想看看WF(Microsoft Workflow Foundation),它是可配置的,应该满足需要(甚至更多);-)工作流一旦实现就不会更改。我需要一种简单明了的实现方式,而在这方面引入一种新技术对我并没有帮助。只需预览一下,我相信老板/客户可能会喜欢它……WWF真是太棒了:)谢谢。我会调查的。如果您对它已经很熟悉,那么还有一个问题-表示每个状态的类都是document类的内部(嵌套)类?我对您的具体设计没有足够的了解,我不会以这种方式实现它(特别是如果文档像您的情况一样是持久的)。这些策略应该对文档进行操作并修改它们。我认为这种方法的缺点是文档类的所有内部都对“状态”类隐藏。通过声明嵌套的策略类,可以成功地解决上述缺点,从而赋予它们对父类的完全访问权。