Adding registries to Container after initialization
c#, inversion-of-control, structuremap
Solution
Did you try `Container.Configure()`? It exists to configure a container after it has already been initialized.
Problem
When creating a StructureMap container, I typically do something like this: ``` var container = new Container(registry => { registry.AddRegistry<MyRegistry>(); }); ``` Where ``` public class MyRegistry : Registry { public MyRegistry() { Scan(x => { x.Assembly("My.Assembly.Name"); x.RegisterConcreteTypesAgainstTheFirstInterface(); } } } ``` However, this has resulted in quite many `registry.AddRegistry` lines in a bootstrapper file, which is then copied into many projects. I would like to be able to call a method taking a constructed container and adding a registry to it, so I can modularize libraries. I came up with this: ``` public static void Setup(ref Container container) { container.PluginGraph.ImportRegistry(typeof(MyRegistry)); } ``` This works, in that the registry is properly added to the container (seen by calling `container.WhatDoIHave()` before and after), but it seems the actual mappings are not done - ie the interface `IFoo` is not registered to concrete class `Foo` that both are defined in `My.Assembly.Name`. What is the difference in doing `ImportRegistry` and `AddRegistry`? Can my `Setup` method be fixed?