依赖服务注入
在构造函数.ctor
中填入需要的参数,在执行构造函数时会自动填充,类似于Microsoft.Extensions.DependencyInjection中的IServiceCollection
备注
- 当有多个公开的构造函数时,将会选择第一个进行填充和调用
- 当首选的构造函数存在无法获取的服务 或 没有找到可用的构造函数(公开且非静态) 时 将报错
参数类型
IServiceProvider
- 当前注册过的其他服务(详见src/Serein.Core/SereinAppBuilder.cs)
提示
你可以使用serviceProvider.GetRequiredService<T>()
扩展方法快速通过类型获取服务对象
示例
using Serein.Core.Models.Plugins.Net;
using System;
namespace MyPlugin;
public class MainPlugin : PluginBase
{
private readonly IServiceProvider _serviceProvider;
public MainPlugin(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider; // 保存为字段方便后续调用
}
public override void Dispose() { }
}
using Serein.Core.Models.Plugins.Net;
using Serein.Core.Services.Data;
using System;
namespace MyPlugin;
public class MainPlugin : PluginBase
{
public MainPlugin(SettingProvider settingProvider)
{
settingProvider.Save(); // 保存设置
}
public override void Dispose() { }
}