0

我正在为我的业务规则引擎使用 codeeffect。我有一个具有用户类型的 manager 属性的用户类。

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

有什么我可以使用的属性吗?

4

1 回答 1

0

您可以使用 ParentAttribute 设置 User 类的显示名称。详细信息可以在这里找到。

更新:您还可以使用 SourceAttribute.MaxTypeNestingLevel 属性来控制源对象的层次结构级别数以及它声明的所有引用类型。详情在这里。使用 ExcludeFromEvaluationAttribute 类从编辑器中删除任何源成员,从而从评估中删除。它的文档在这里

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

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 类作为其源提供给规则编辑器并将嵌套级别的值设置为 1 或更少,我会得到以下菜单选项:

(
Name

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

如果我给它 2 级,我会在菜单中看到以下选项:

(
InnerAddress.Street
Name

编辑器显示 InnerAddress 实例(级别 1)及其 Street 属性(级别 2)。

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

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

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

于 2019-08-13T05:44:57.997 回答