- Use any type as base for plugins
- Supports multipe plugin groups (base types)
- Use DI to create plugins
Update appsettings.json with Plugins:Path key pointing to the plugins folder:
{
"Plugins": {
"Path": "/../Extensions"
}
}
Configure services by adding services.AddPlugins();
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfiguration>(configuration);
services.AddPlugins();
}
Work with plugins:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IServiceProvider services)
{
...
app.Run(async (context) =>
{
var count = manager.Plugins.Count;
var plugins = string.Join(Environment.NewLine, manager.Plugins.Select(p => p.ToString()));
await context.Response.WriteAsync($"Hello {count} Plugins:{Environment.NewLine}{plugins}");
});
}