📰
imarket校园集市
  • Welcome
  • Introduce(简介)
  • Getting Started
    • Quickstart(快速开始)
  • API
    • 安全认证
    • Auth(认证与授权)
    • Account(账户管理)
    • Admin(管理员功能)
    • Post(帖子管理)
    • User(用户相关)
    • Comments(评论管理)
    • Message(站内消息)
    • Image(图片管理)
    • Search(搜索功能)
  • Plugin
    • Introduce(插件系统简介)
    • Start(快速上手)
    • Dependency Injection(依赖注入)
    • API (状态接口)
  • Database
    • Tables(数据库表结构)
    • create_tables_script(数据库创建脚本)
Powered by GitBook
On this page
  1. Plugin

Dependency Injection(依赖注入)

如果插件需要调用系统服务,则需要进行依赖注入,如下

using imarket.plugin;
// 引入依赖接口
using imarket.service.IService;
namespace plugin_test
{
    [PluginTag(Name = "plugin_test", Description = "A plugin for testing", Author = "Your Name")]
    public class plugin_test: IPluginInterceptor
    {
        private readonly IUserService service;
        // 在构造函数中注入依赖
        public plugin_test(IUserService service)
        {
            this.service = service;
        }
        public async Task<(bool op, object? result)> OnBeforeExecutionAsync(string route, object?[] args, string? username = null)
        {
            // 如果请求的路由是获取用户信息的路由
            if (route == "/api/Account/Info" && !string.IsNullOrEmpty(username))
            {
                var user = await service.GetUserByUsernameAsync(username);
                return (true,new
                {
                    success = true,
                    info = new
                    {
                        username = user?.Username,
                        nickname = user?.Nickname,
                        avatar = user?.Avatar,
                        email = user?.Email,
                        status = user?.Status,
                        from = "plugin_test"
                    }
                });
            }
            return (false,null);
        }
        public async Task<(bool op, object? result)> OnAfterExecutionAsync(string route, object? result, string? username = null)
        {
            return (false, null);
        }
    }
}

可注入的依赖如下

  • ICommentService

  • IFavoriteService

  • IImageService

  • ILikeService

  • ILoginService

  • IMailService

  • IMessageService

  • IPostCategoriesService

  • IPostService

  • IUserService

  • Database

PreviousStart(快速上手)NextAPI (状态接口)

Last updated 3 months ago