从业务规则引擎中排除 3 级之后的递归属性

Exclude recursive properties after 3 level from business rule engine

我正在为我的业务规则引擎使用 codeeffect。我有一个用户 class,经理 属性,用户类型为

public class BasicUser
{
public int ID { get; set; }
public string Name { get; set; }
public BasicUser Manager { get; set; }
}

在当前显示的业务规则引擎中 User.Manager.Manager.Manage.Manager.ID 但我只想显示 2 个级别,例如 User.Manager.Manager.ID

有什么属性可以使用吗?

您可以使用 ParentAttribute 设置用户的显示名称 class。详情可见here.

更新: 您还可以使用 SourceAttribute.MaxTypeNestingLevel 属性 来控制源对象及其声明的所有引用类型的层级数。详情为here. Use the ExcludeFromEvaluationAttribute class to remove any source member from the editor and, consequently, from evaluation. Its documentation is here

更新 2: 考虑以下两个 classes:

public class Address
{
    public Address() { }

    public string Street { get; set; }
    public Address InnerAddress { get; set; }
}

[Source(MaxTypeNestingLevel = 1)]
public class Patient
{
    public Patient() { }

    public string Name { get; set; }
    public Address InnerAddress { get; set; }
}

如果我将 Patient class 作为其来源提供给规则编辑器,并将嵌套级别的值设置为 1 或更小,我将获得以下菜单选项:

(
Name

即编辑器忽略源中的所有引用类型,因为级别为 1。

如果我将其设置为 2 级,我会在菜单中看到以下选项:

(
InnerAddress.Street
Name

编辑器显示 InnerAddress 实例(一级)及其 Street 属性(二级)。

如果我将级别设置为 4,我会得到这些选项:

(
InnerAddress.InnerAddress.InnerAddress.Street
InnerAddress.InnerAddress.Street
InnerAddress.Street
Name

显然,选项现在显示到第 4 级。所有这些选项都在 Code Effects 演示项目之一上进行了测试。