public void Test2() { Dictionary <string, string> dic = new Dictionary <string, string>() { { "Plugins:Path", "Test/Plugins" }, { "Plugins:Xfrogcn.PluginFactory.Test.TestPluginB:IsEnabled", "0" } }; var config = new ConfigurationBuilder() .AddInMemoryCollection(dic) .Build(); IServiceCollection sc = new ServiceCollection() .AddPluginFactory(config, typeof(DefaultPluginFactoryConfigTest).Assembly); var sp = sc.BuildServiceProvider(); var options = sp.GetRequiredService <PluginFactoryOptions>(); IPluginLoader loader = sp.GetRequiredService <IPluginLoader>(); DefaultPluginFactory factory = sp.GetRequiredService <IPluginFactory>() as DefaultPluginFactory; Assert.Equal(4, loader.PluginList.Count); PluginInfo pi = loader.PluginList.FirstOrDefault(p => p.PluginType == typeof(TestPluginB)); Assert.False(pi.IsEnable); var p = factory.GetPlugin <TestPluginB>(); Assert.Null(p); var p2 = factory.GetPlugin <TestPluginC>(); Assert.NotNull(p2); }
public void Test3() { Dictionary <string, string> dic = new Dictionary <string, string>() { { "Plugins:Path", "Test/Plugins" }, { "Plugins:Xfrogcn.PluginFactory.Test.TestPluginE:ConfigA", "A" }, { "Plugins:_Share:ConfigB", "B" }, //共享配置 }; var config = new ConfigurationBuilder() .AddInMemoryCollection(dic) .Build(); IServiceCollection sc = new ServiceCollection() .AddPluginFactory(config, typeof(DefaultPluginFactoryConfigTest).Assembly); var sp = sc.BuildServiceProvider(); var options = sp.GetRequiredService <PluginFactoryOptions>(); IPluginLoader loader = sp.GetRequiredService <IPluginLoader>(); DefaultPluginFactory factory = sp.GetRequiredService <IPluginFactory>() as DefaultPluginFactory; TestPluginEService pluginEService = sp.GetRequiredService <TestPluginEService>(); var p2 = factory.GetPlugin <TestPluginE>(); Assert.Equal(pluginEService, p2.Service); Assert.Equal("A", pluginEService.Options.ConfigA); Assert.Equal("B", pluginEService.Options.ConfigB); // Options变更 config["Plugins:_Share:ConfigB"] = "B2"; config.Reload(); Assert.Equal("B2", pluginEService.Options.ConfigB); }
public async Task Test4() { Dictionary <string, string> dic = new Dictionary <string, string>() { { "Plugins:Path", "Test/Plugins" }, { "Plugins:PluginFactory.Test.TestPluginE:ConfigA", "A" }, { "Plugins:_Share:ConfigB", "B" }, //共享配置 }; var host = Host.CreateDefaultBuilder() .ConfigureAppConfiguration(cb => { cb.AddInMemoryCollection(dic); }) .UsePluginFactory(typeof(DefaultPluginFactoryConfigTest).Assembly) .Build(); await host.StartAsync(); DefaultPluginFactory factory = host.Services.GetRequiredService <IPluginFactory>() as DefaultPluginFactory; var pluginE = factory.GetPlugin <TestPluginE>(); Assert.Equal("B", pluginE.Service.Options.ConfigB); Assert.True(pluginE.IsStarted); }