Open constructor-igor opened 4 years ago
client
string pluginsFolder = Path.GetFullPath(@"..\..\..\Plugins");
AssemblyFilter assemblyFilter = new AssemblyFilter(pluginsFolder);
var container = new WindsorContainer();
container.Register(Classes.FromAssemblyInDirectory(assemblyFilter).BasedOn<IDemoPlugin>().WithService.FromInterface());
IDemoPlugin[] plugins = container.ResolveAll<IDemoPlugin>();
Console.WriteLine($"In folder {pluginsFolder} found {plugins.Length} plugins.");
foreach (IDemoPlugin plugin in plugins)
{
plugin.Run(null);
}
Console.WriteLine("Press Enter to exit.");
Console.ReadLine();
child container:
WindsorContainer childContainer = new WindsorContainer();
childContainer.Register(Component.For<MyChildService>());
rootContainer.AddChildContainer(childContainer);
childContainer.Resolve<MyRootService>().Run("child");
childContainer.Resolve<MyChildService>().Run("child");
try
{
Console.WriteLine("trying to resolve MyChildContainer in root container...");
rootContainer.Resolve<MyChildService>().Run("root");
}
catch (Exception e)
{
Console.WriteLine($"Cannot resolve in root: {e.Message}");
}
http://selfdocumenting.net/plugins-in-net-with-castle-windsor/