[]
开始本教程前,请确保已经仔细阅读了快速开始章节,并已经完成了环境准备,并通过活字格插件构建器创建了默认工程。后续的文档都会基于活字格插件构建器创建的空白工程进行讲解。
现在,我们已经通过活字格插件构建工具开发了第一个服务端命令插件。
首先查看代码结构。
修改服务端命令插件,我们核心关注 MyPluginServerCommand.cs。
MyPluginServerCommand.cs 默认代码如下:
[Icon("pack://application:,,,/MyPlugin;component/Resources/Icon.png")]
[Designer("MyPlugin.Designer.MyPluginServerCommandDesigner, MyPlugin")]
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 string ToString()
{
return "我的插件服务端命令";
}
public override CommandScope GetCommandScope()
{
return CommandScope.ExecutableInServer;
}
}
编译代码,重启设计器。
在设计器中找到 “我的插件服务端命令”服务端命令插件,可以看到定义的属性如下。
给服务端命令定义“参数1”和“参数2”。
并修改“我的插件服务端命令”。
单击测试。
在弹出的对话框中添加设置参数。
查看结果页面。
也许你还不理解这些代码的意思,没关系,后续的教程中对这些代码都会有详细的解释。
ICommandExecutableInServerSide Vs ICommandExecutableInServerSideAsync:
在活字格早期版本中会通过实现 ICommandExecutableInServerSide 接口的Execute方法来定义服务端命令。新版活字格增加了 ICommandExecutableInServerSideAsync 接口和 ExecuteAsync 方法。如果开发新的服务端命令,推荐使用 ICommandExecutableInServerSideAsync 加 async await 语法来实现异步逻辑。如果工具方法同时提供了 Async 方法和同步方法,推荐使用 Async 加 await 关键字。async await 可以显著提示服务端命令在高并发访问情况下的性能表现。