其他分享
首页 > 其他分享> > ABP.vNext系列之模块化插件式使用

ABP.vNext系列之模块化插件式使用

作者:互联网

你可以在不添加引用的情况下,将Module作为插件加载,和正常使用其他模块一样使用。要做到这一点,需要使用 IServiceCollection.AddApplication<T>() 扩展方法来配置。

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity.PlugIns;

namespace MyPlugInDemo.Web
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddApplication<MyPlugInDemoWebModule>(options =>
            {
                options.PlugInSources.AddFolder(@"D:\Temp\MyPlugIns");
            });
        }

        public void Configure(IApplicationBuilder app)
        {
            app.InitializeApplication();
        }
    }
}

AddFolder() 仅在给定文件夹中查找程序集文件,但不查找子文件夹。可以将 SearchOption.AllDirectories 作为第二个参数传递,以递归地从子文件夹中查找插件。

options.PlugInSources 实际上是 IPlugInSource 实现的列表,而 AddFolder 只是以下表达式的快捷方式:

options.PlugInSources.Add(new FolderPlugInSource(@"D:\Temp\MyPlugIns"));

​ ABP还内置了其他的两个的 Plug-In Source 实现:PlugInSources.AddFiles() 获取程序集(通常是 dll)文件的列表。这是使用 FilePlugInSource 类的快捷方式。PlugInSources.AddTypes() 获取模块类类型的列表。如果使用它,则需要自己加载模块的程序集,但它在需要时提供了灵活性。这是使用 TypePlugInSource 类的快捷方式。如果需要,可以创建自己的 IPlugInSource 实现并像其他的一样添加到 options.PlugInSources。

标签:vNext,插件,AddFolder,PlugInSources,ABP,using,快捷方式,options
来源: https://www.cnblogs.com/jesen1315/p/16201462.html