29

API 参考与接口文档

介绍

本文档详细介绍了 Known 项目中的插件系统接口和服务,包括 PluginBase.csPluginService.cs 文件的核心功能、接口定义和实现细节。这些接口和服务为开发者提供了扩展 Known 项目功能的标准化方式。

插件接口

文件概述

  • 文件路径: Known/Plugins/PluginBase.cs
  • 功能: 定义了插件的基础接口和基类,支持插件的配置、渲染和交互。

核心接口与类

  1. IPlugin 接口

    • 功能: 插件的基础接口,定义了插件的通用行为和属性。
    • 关键属性:
      • Parent: 上级组件对象。
      • Info: 插件配置信息。
    • 关键方法:
      • Config: 显示插件配置界面。
    public interface IPlugin : Microsoft.AspNetCore.Components.IComponent
    {
        BaseComponent Parent { get; set; }
        PluginInfo Info { get; set; }
        void Config(Func<object, Task<Result>> onConfig);
    }
    
  2. PluginBase<T> 基类

    • 功能: 插件组件的基类,实现了 IPlugin 接口,提供了插件的默认行为和渲染逻辑。
    • 关键属性:
      • AutoPage: 自动页面组件对象。
      • Parameter: 插件配置参数对象。
      • Draggable: 是否支持拖拽。
    • 关键方法:
      • BuildPlugin: 构建插件内容。
      • AddAction: 添加插件操作项。
      • SaveParameterAsync: 保存插件参数。
    public class PluginBase<T> : BaseComponent, IPlugin
    {
        public AutoPage AutoPage => Page.Page;
        public T Parameter { get; internal set; }
        public bool Draggable { get; set; }
        public BaseComponent Parent { get; set; }
        [Parameter] public PluginInfo Info { get; set; }
    
        protected virtual void BuildPlugin(RenderTreeBuilder builder) { }
        protected ActionInfo AddAction(string icon, string name, Action onClick) { }
        protected Task<Result> SaveParameterAsync(T parameter) { }
    }
    

类图

classDiagram
    class IPlugin {
        +BaseComponent Parent
        +PluginInfo Info
        +Config(Func<object, Task<Result>> onConfig)
    }

    class PluginBase {
        +AutoPage AutoPage
        +T Parameter
        +bool Draggable
        +BaseComponent Parent
        +PluginInfo Info
        +BuildPlugin(RenderTreeBuilder builder)
        +AddAction(string icon, string name, Action onClick)
        +SaveParameterAsync(T parameter)
    }

    IPlugin <|-- PluginBase

插件服务

文件概述

  • 文件路径: Known/Plugins/PluginService.cs
  • 功能: 提供了插件服务的接口和默认实现,支持表格和表单插件的配置和操作。

核心接口与类

  1. IPluginService 接口

    • 功能: 定义了插件服务的通用行为。
    • 关键方法:
      • GetTableActions: 获取表格插件的操作列表。
      • GetFormActions: 获取表单插件的操作列表。
      • ConfigTable: 配置表格插件。
      • AddTableColumn: 添加表格栏位插件。
      • EditToolbar: 编辑工具条。
    public interface IPluginService
    {
        List<ActionInfo> GetTableActions(BaseTablePage page);
        List<ActionInfo> GetFormActions(BaseForm form);
        void ConfigTable();
        void AddTableColumn();
        void AddTableAction();
        void EditToolbar(KToolbar toolbar);
    }
    
  2. PluginService

    • 功能: 默认的插件服务实现,目前为空实现,开发者可以扩展。
    class PluginService : IPluginService
    {
        public List<ActionInfo> GetTableActions(BaseTablePage page) => [];
        public List<ActionInfo> GetFormActions(BaseForm form) => [];
        public void ConfigTable() { }
        public void AddTableColumn() { }
        public void AddTableAction() { }
        public void EditToolbar(KToolbar toolbar) { }
    }
    

类图

classDiagram
    class IPluginService {
        +GetTableActions(BaseTablePage page)
        +GetFormActions(BaseForm form)
        +ConfigTable()
        +AddTableColumn()
        +AddTableAction()
        +EditToolbar(KToolbar toolbar)
    }

    class PluginService {
        +GetTableActions(BaseTablePage page)
        +GetFormActions(BaseForm form)
        +ConfigTable()
        +AddTableColumn()
        +AddTableAction()
        +EditToolbar(KToolbar toolbar)
    }

    IPluginService <|-- PluginService

总结

本文档详细介绍了 Known 项目中的插件系统,包括插件的基础接口 IPlugin 和基类 PluginBase<T>,以及插件服务接口 IPluginService 和默认实现 PluginService。这些接口和类为开发者提供了扩展 Known 项目功能的标准化方式,支持插件的配置、渲染和交互。

开发者可以通过继承 PluginBase<T> 实现自定义插件,或扩展 PluginService 提供更丰富的插件服务功能。