private static void RegisterActionResolver(ContainerBuilder builder) { builder.Register <ActionResolver>(c => { var movementResolver = new MovementResolver(c.Resolve <ILogger>(), c.Resolve <ICreatureRegistry>(), c.Resolve <IPlayArea>(), c.Resolve <ICombatRegistry>(), c.Resolve <IMessageDispatcher>()); var lootAllResolver = new LootAllResolver(c.Resolve <ILogger>(), c.Resolve <ICreatureRegistry>(), c.Resolve <IPlayArea>()); var lootResolver = new LootResolver(c.Resolve <ILogger>(), c.Resolve <ICreatureRegistry>(), c.Resolve <IPlayArea>()); var attackResolver = new AttackResolver(c.Resolve <ILogger>(), c.Resolve <ICreatureRegistry>(), c.Resolve <IPlayArea>(), c.Resolve <ICombatSimulator>()); var consumeResolver = new ConsumeResolver(c.Resolve <ICreatureRegistry>()); var resolverMap = new Dictionary <string, IResolver> { { movementResolver.ActionName, movementResolver }, { lootAllResolver.ActionName, lootAllResolver }, { lootResolver.ActionName, lootResolver }, { attackResolver.ActionName, attackResolver }, { consumeResolver.ActionName, consumeResolver } }; return(new ActionResolver(c.Resolve <IActionRepository>(), resolverMap)); }).As <IActionResolver>(); }