Converting From Castle Windsor To StructureMap In An MVC2 Project

Posted by alphadogg on Stack Overflow See other posts from Stack Overflow or by alphadogg
Published on 2010-05-07T02:33:34Z Indexed on 2010/05/07 2:38 UTC
Read the original article Hit count: 409

I am learning about best practices in MVC2 and I am knocking off a copy of the "Who Can Help Me" project (http://whocanhelpme.codeplex.com/) off Codeplex. In it, they use Castle Windsor for their DI container. One "learning" task I am trying to do is convert this subsystem in this project to use StructureMap.

Basically, at Application_Start(), the code news up a Windsor container. Then, it goes through multiple assemblies, using MEF:

public static void Register(IContainer container)
{
    var catalog = new CatalogBuilder()
                      .ForAssembly(typeof(IComponentRegistrarMarker).Assembly)
                      .ForMvcAssembly(Assembly.GetExecutingAssembly())
                      .ForMvcAssembliesInDirectory(HttpRuntime.BinDirectory, "CPOP*.dll") // Won't work in Partial trust
                      .Build();

    var compositionContainer = new CompositionContainer(catalog);

    compositionContainer
        .GetExports<IComponentRegistrar>()
        .Each(e => e.Value.Register(container));
}

and any class in any assembly that has an IComponentRegistrar interface will get its Register() method run.

For example, the controller registrar's Register() method implementation basically is:

public void Register(IContainer container)
{
    Assembly.GetAssembly(typeof(ControllersRegistrarMarker)).GetExportedTypes()
            .Where(IsController)
            .Each(type => container.AddComponentLifeStyle( 
                             type.Name.ToLower(), 
                             type, 
                             LifestyleType.Transient ));
}

private static bool IsController(Type type)
{
    return typeof(IController).IsAssignableFrom(type);
}

Hopefully, I am not butchering WCHM too much. I am wondering how does one do this with StructureMap?

© Stack Overflow or respective owner

Related posts about structuremap

Related posts about castle-windsor