示例#1
0
        /// <inheritdoc cref="LoadModuleServiceCollectionExtensions.LoadModuleDirectory(IServiceCollection, Action{DirectoryModuleSource}?, Action{ModuleLoadOptions}?, string[])"/>
        public static IHostBuilder LoadModuleDirectory(this IHostBuilder hostBuilder, Action <DirectoryModuleSource>?sourceOptionAction, Action <ModuleLoadOptions>?optionAction, params string[] directories)
        {
            var source = new DirectoryModuleSource(directories);

            sourceOptionAction?.Invoke(source);

            return(hostBuilder.InternalAddModuleSource(source, optionAction));
        }
        /// <summary>
        /// 加载指定目录下的模块
        /// </summary>
        /// <param name="services"></param>
        /// <param name="sourceOptionAction">目录源配置</param>
        /// <param name="optionAction">加载配置</param>
        /// <param name="directories">目录列表</param>
        /// <returns></returns>
        public static IModuleLoaderBuilder LoadModuleDirectory(this IServiceCollection services, Action <DirectoryModuleSource>?sourceOptionAction, Action <ModuleLoadOptions>?optionAction, params string[] directories)
        {
            var source = new DirectoryModuleSource(directories);

            sourceOptionAction?.Invoke(source);

            return(services.InternalAddModuleSource(source, optionAction));
        }
示例#3
0
        /// <summary>
        /// 增加要加载模块的目录
        /// </summary>
        /// <param name="moduleLoaderBuilder"></param>
        /// <param name="sourceOptionAction"></param>
        /// <param name="directories"></param>
        /// <returns></returns>
        public static IModuleLoaderBuilder AddModuleDirectory(this IModuleLoaderBuilder moduleLoaderBuilder, Action <DirectoryModuleSource>?sourceOptionAction, params string[] directories)
        {
            var source = new DirectoryModuleSource(directories);

            sourceOptionAction?.Invoke(source);

            return(moduleLoaderBuilder.InternalAddModule(source));
        }
        public void LoadWithFilter_3()
        {
            var directoryModuleSource = new DirectoryModuleSource(GetModuleDirectory())
            {
                SearchDepth    = 5,
                AssemblyFilter = m => false,
            };

            var modules = directoryModuleSource.GetModules().ToArray();

            Assert.AreEqual(0, modules.Length);
        }
        public void LoadWithFilter_4()
        {
            var directoryModuleSource = new DirectoryModuleSource(GetModuleDirectory())
            {
                SearchDepth = 5,
                FileFilter  = m => m.Contains(Path.GetFileName(GetSampleModule1FilePath()))
            };

            var modules = directoryModuleSource.GetModules().ToArray();

            Assert.AreEqual(1, modules.Length);
            Assert.AreEqual("SampleModule1Module", modules.First().Name);
        }
        private static DirectoryModuleSource LoadDirectory(int searchDepth, int moduleCount)
        {
            var directoryModuleSource = new DirectoryModuleSource(GetModuleDirectory())
            {
                SearchDepth = searchDepth,
            };

            Assert.AreEqual(1, directoryModuleSource.OriginDirectories.Count);

            var modules = directoryModuleSource.GetModules().ToArray();

            if (moduleCount > -1)
            {
                Assert.AreEqual(moduleCount, modules.Length);
            }
            if (moduleCount > 0)
            {
                Assert.AreEqual("SampleModule1Module", modules.First().Name);
            }

            return(directoryModuleSource);
        }