3

我需要为我们的功能使用 codeeffect 规则编辑器。我们在规则编辑器中呈现动态操作,用户可以从中进行选择。

因此,我使用 FlexSource 类型创建了规则编辑器。我尝试通过为每个操作添加 FlexMethodInfo 并为每个操作配置 ActionAttributes 在规则编辑器中配置操作。例如,动作是“SetAmount”、“SetPercentage”和“SetQuantity”。

它成功渲染了编辑器,并提供了以上三个选项可供选择。但无论我选择哪个选项,它只会选择“SetAmount”并在规则编辑器中显示。

截图 1

截图 2

截图 3

截图 4

截图 5

4

1 回答 1

1

FlexSource 背后的想法是继承 System.Type 以便 Editor 可以继续使用反射来枚举方法、属性、字段等。

为此,必须实现最少数量的类和方法。Flex 演示显示了哪些是。

但是,当前版本缺少 FlexMethodInfo.ToString() 的覆盖。

请在您的 FlexMethodInfo 类中添加以下内容。调整返回值以反映您的实际方法及其签名。编辑器使用 ToString() 来构建散列和匹配方法。它遵循与 MethodInfo.ToString() 相同的逻辑。

public override string ToString()
{
    switch (methodName)
    {
        case "Concatenate":
            return "System.String Concatenate(System.String, System.String)";
        case "Register":
            return "Register()";
        case "Confirm":
            return "Confirm(System.String)";
        default:
            return base.ToString();
    }
}

确保为编辑器和引擎获取最新的 NuGet 包。我相信他们已经发布了解决一些用例的更新。

于 2020-05-08T05:00:59.540 回答