Ecco come configurare in Castle Windsor un parametro di tipo Dictionary dove il valore associato alla chiave è un oggetto e non una semplice stringa. Nell'esempio seguente la classe PizzaShop riceve nel costruttore un parametro builders di tipo dictionary avente come chiave il tipo di pizza e come valore l'istanza della classe specializzata nella preparazione di quel tipo di pizza.
<components>
<component id="pizza-shop"
service="Windsor.Sample.IShop, Windsor.Sample"
type="Windsor.Sample.PizzaShop, Windsor.Sample">
<parameters>
<builders>
<dictionary>
<item key="margherita">${margherita-pizzabuilder}</item>
<item key="veggie">${veggie-pizzabuilder}</item>
</dictionary>
</builders>
</parameters>
</component>
<component id="margherita-pizzabuilder"
service="Windsor.Sample.IPizzaBuilder, Windsor.Sample"
type="Windsor.Sample.MargheritaPizzaBuilder, Windsor.Sample">
</component>
<component id="veggie-pizzabuilder"
service="Windsor.Sample.IPizzaBuilder, Windsor.Sample"
type="Windsor.Sample.VeggiePizzaBuilder, Windsor.Sample">
</component>
</components>
Ed ecco come è fatta nello specifico la classe PizzaShop dell'esempio:
public class PizzaShop : IShop
{
private readonly Dictionary<string, IPizzaBuilder> _builders;
public PizzaShop(Dictionary<string, IPizzaBuilder> builders)
{
this._builders = builders;
}
}