Page tree
Skip to end of metadata
Go to start of metadata

命令执行后,可以吧命令的执行结果保持到变量里,以便后续的命令或逻辑使用。

可以通过实现ResultToPropertyAttribute来实现此效果。

示例代码:

注意:标注 ResultToProperty 的属性类型必须是 string。推荐给属性添加默认值,以方便用户使用。

    public class MyPluginServerCommand : Command, ICommandExecutableInServerSideAsync
    {
        [FormulaProperty]
        [DisplayName("加数1")]
        public object AddNumber1 { get; set; }

        [FormulaProperty]
        [DisplayName("加数2")]
        public object AddNumber2 { get; set; }

        [ResultToProperty]
        [DisplayName("相加结果")]
        public string ResultTo { get; set; } = "结果";

        public async Task<ExecuteResult> ExecuteAsync(IServerCommandExecuteContext dataContext)
        {
            var add1 = await dataContext.EvaluateFormulaAsync(AddNumber1);
            var add2 = await dataContext.EvaluateFormulaAsync(AddNumber2);

            double.TryParse(add1?.ToString(), out var add1Number);
            double.TryParse(add2?.ToString(), out var add2Number);

            dataContext.Parameters[ResultTo] = add1Number + add2Number;

            return new ExecuteResult();
        }

        public override CommandScope GetCommandScope()
        {
            return CommandScope.ExecutableInServer;
        }
    }

设计器中的效果:

在后续命令编辑公式时,设置的变量可以直接在公式中使用。

  • No labels