c# - 如何在自分层树结构中的每个节点执行业务规则

标签 c# .net asp.net-mvc algorithm design-patterns

<分区>

在一个自分层树状结构中,我想在每个节点添加/编辑/删除时检查每个节点级别的业务规则(基于节点类型)。我尝试实现复合设计模式但没有成功。请提出建议。

示例类结构。

class Parent
{
    int Id;
}

class ChildType1 : Parent
{
    string propForType1;
    List<Parent> ListOfChildren;
}

class ChildType2 : Parent
{
    string propForType2;
    List<Parent> ListOfChildren;
}

enter image description here

当我说业务规则时,这意味着这些规则是节点类型的特定约束。 例如:业务规则 1 - ChildType2 只能有 ChildType2 类型的子
业务规则 2 - ChildType1 应至少有 2 个子节点且 propForType1 值不应为空。

对于每个新节点添加/编辑/删除,我需要在每个节点检查这些规则,以便我的整体树满足所有业务规则。

最佳答案

您应该检查访问者模式。它的优点是处理树/数据集合,其中子级是基类的实现。

鲍勃叔叔的一篇好文章可以在这里找到:http://butunclebob.com/ArticleS.UncleBob.IuseVisitor

另一个引用可以在这里找到: http://www.dofactory.com/net/visitor-design-pattern

关于c# - 如何在自分层树结构中的每个节点执行业务规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33878532/

相关文章:

c# - 在 CosmosDB 文档的字典中查询项目

.net - 使用 C# .Net 的 TCP 客户端/服务器

c# - 向页面传递参数

css - MVC WebGrid 中 gridTable 的垂直滚动条

c# - 添加 Crystal Report DLL 的引用

c# - msdeploy --- 它有效还是很糟糕?

asp.net - 将 session 超时增加到一周或更长时间

javascript - @RenderBody 用于 JavaScript?

c# - 在 C# 中从 PDF 中读取基于标签名称的特定值

C# 到 PHP base64 编码/解码