Liath
Liath

Reputation: 10191

Variable Parameter injection with Windsor

I'm working with Castle.Windsor and I'm looking at parameter injection.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <components>
    <component id='plugin' service='PluginApp.IPlugin, PluginApp' type='MainPlugin.Plugin, MainPlugin' />    
    <component id='pluginManager' service='PluginApp.IPluginManager, PluginApp' type='PluginApp.PluginManager'>
      <parameters>
        <plugin>${plugin}</plugin>        
      </parameters>
    </component>
  </components>
</configuration>

This is my class

public class PluginManager : IPluginManager
    {
        public IList<IPlugin> Plugins { get; protected set; }

        public PluginManager(IPlugin plugin)
        {
            this.Plugins = new List<IPlugin>();
            this.Plugins.Add(plugin);
        }

    }

I would like to update my PluginManager to accept a variable number of plugins eg

public class PluginManager : IPluginManager
{
    public IList<IPlugin> Plugins { get; protected set; }

    public PluginManager(params IPlugin[] plugins)
    {
        this.Plugins = new List<IPlugin>();
        foreach(IPlugin plugin in plugins) this.Plugins.Add(plugin);
    }    
}

Does Windsor support this? How do I set up my XML?

Upvotes: 0

Views: 285

Answers (1)

Related Questions