如果属性的类型是枚举,那么在设计器中会以下拉列表的形式提供给用户编辑。
public class MyPluginCommand : Command { public UserType MyProperty1 { get; set; } } public enum UserType { Student, Teacher, Worker }
在设计器中效果如下:
需要注意的是,在C#代码中的枚举生成到JavaScript 中实际上是一个整数,默认情况下整数的值就是枚举出现的顺序。
所以在JavaScript代码中需要如下处理:
class MyPluginCommand extends Forguncy.Plugin.CommandBase{ execute() { const propValue = this.CommandParam.MyProperty1; let text = ""; switch (propValue) { case 0: text = "学生" break; case 1: text = "教师" break; case 2: text = "工人" break; default: } alert(text); } } Forguncy.Plugin.CommandFactory.registerCommand("MyPlugin.MyPluginCommand, MyPlugin", MyPluginCommand);
为了提升代码的可读性性,可以替换为一下等价代码处理枚举类型属性:
class MyPluginCommand extends Forguncy.Plugin.CommandBase{ userType = { 0: "学生", 1: "教师", 2: "工人", } execute() { const propValue = this.CommandParam.MyProperty1; alert(this.userType[propValue]); } } Forguncy.Plugin.CommandFactory.registerCommand("MyPlugin.MyPluginCommand, MyPlugin", MyPluginCommand);
自定义枚举项目显示名称, 可以通过标注 Description 实现。
public class MyPluginCommand : Command { public UserType MyProperty1 { get; set; } } public enum UserType { [Description("学生")] Student, [Description("教师")] Teacher, [Description("工人")] Worker }
效果: